学习Android之HttpURLConnection
WebView的用法
作用
在应用程序中展示网页。
实现
我们需要在xml布局文件中添加一个WebView控件。
然后修改MainActivity中的代码,如下所示:
val webView = findViewById<WebView>(R.id.webView) webView.settings.javaScriptEnabled = true webView.webViewClient = WebViewClient() webView.loadUrl("https//www.baidu.com")
通过WebView的getSettings()方法可以设置一些浏览器的属性,这里只是调用了setJavaScriptEnabled()方法,让WebView支持JavaScript脚本。
接下来是比较重要的一个部分,调用了WebView的setWebViewClient()方法,并传入了一个WebViewClient的实例。这段代码的作用是,当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前WebView中显示,而不是打开系统浏览器。
最后一步就调用WebView的loadUrl()方法,并将网址传入,即可展示相应网页的内容。
别忘了去AndroidManifest.xml文件中加入权限声明,如下所示:
<uses-permission android:name="android.permission.INTERNET"/>
使用HTTP访问网络
http工作原理
客户端向服务器发出一条http请求,服务器收到请求后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。
使用HttpURLConnection
以前,Android上发送HTTP请求一般有两种方式:HttpURLConnection和HttpClient。不过由于HttpClient存在API数量过多、扩展困难等缺点,在Android 6.0系统中被废除了。现在更建议使用HttpURLConnection。
用法
首先需要获取HttpURLConnection实例,一般只需创建一个URL对象,并传入目标的网络地址,然后调用一下opConnection()方法即可:
val url = URL("https//www.baidu.com")
val connection = url.openConnection() as HttpURLConnection
在得到HttpURLConnection的实例之后,可以设置HTTP请求所使用的方法。常用的有:GET和POST。
请求数据
GET表示希望从服务器那里获取数据,而POST表示希望提交数据给服务器。写法如下:
connection.requestMethod = "GET"
接下来就可以进行一些自由的定制了,比如设置连接超时、读取超时的毫秒数,以及服务器希望得到的一些消息头等。实例写法:
connection.connectTimeout = 8000
connection.readTimeout = 8000
之后再调用getInputStream()方法就可以获取到服务器返回的输入流了,剩下的任务就是对输入流进行读取:
val input = connection.inputStream
最后调用disconnect()方法将这个HTTP连接关闭:
connection.disconnect()
提交数据
只需要将HTTP请求的方法改成POST,并在获取输入流之前把要提交的数据写出即可。
注意:每条数据都要以键值对的形式存在,数据与数据之间用”&“符号隔开。比如:
connection.requestMethod = "POST" val output = DataOutputStream(connection.outputStream) output.writeBytes("username=admin&password=123456")

浙公网安备 33010602011771号