学习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")

 

posted @ 2022-03-14 21:39  PeacefulGemini  阅读(364)  评论(0)    收藏  举报
回顶部