第一行代码 第三版 第11章 网络技术 11.1~11.2OkHttp

11.1 WebView的用法

用于在应用程序中展示一些网页,借助WebView控件,我们可以在自己的应用程序中嵌入一个浏览器。

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"/>
 	override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webView.settings.setJavaScriptEnabled(true)
        webView.webViewClient = WebViewClient()
        webView.loadUrl("https://www.baidu.com")
    }

通过webView的getSrttings()方法可以设置一些浏览器的属性;
此处调用setJavaScriptEnabled()方法,让WebView支持JavaScript脚本。

随后调用WebView的setWebViewClient()方法 ,传入了一个WebViewClient的实例 ;用途 : 当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前的WebView中显示,而不打开系统浏览器。

最后调用了loadUrl()方法,传入网址即可展示相应的网页内容。

需要申请网络权限

11.2 使用Http访问网络

11.2.1 使用HttpURLConnection

首先需要获取HttpURLConnection的实例,创建一个URL对象,传入目标的网络地址,然后调用openConnection()方法。

		var connection : HttpURLConnection?=null
		val url=URL("https://www.baidu.com") //创建URL对象
        connection= url.openConnection() as HttpURLConnection 
        connection.requestMethod="GET"	//设置HTTP请求所使用的方法  GET 和 POST
        onnection.connectTimeout=8000	//设置连接超时
        connection.readTimeout = 8000   //设置读取超时

11.2.2 使用OkHttp

使用开源库OkHttp网络通信库:(OkHttp的项目主页地址:https://github.com/square/okhttp)
使用之前需要添加OkHttp库的依赖;在app/build.gradle文件中的dependencies闭包中添加。
在这里插入图片描述

Okhttp的用法

  • 首先需要创建一个OkHttpClient的实例
    val client =OkHttpClient()
  • 发起一条HTTP请求,需要创建一个Request对象:可以通过url()方法来设置目标的网络地址。
val request = Request.Builder()
            .url("https://www.baidu.com")
            .build()
  • 调用OkHttpClient 的 newCall() 方法来创建一个Call 对象,并调用它的execute() 方法 来发送请求并获取服务器返回的数据。
    val resopnse = client.newCall(request).execute()

  • Resonse 对象就是服务器返回的数据,可以用如下写法来得到返回的具体内容:
    val responseData = response.body?.string()

  • 如果发送POST请求,我们需要先构建一个Request Body 对象来存放待提交的参数 :

		//发送一条 post请求 先构建RequestBody 对象存放待提交的参数
         val requestBody = FormBody.Builder()
            .add("username","admin")
            .add("password","123456")
            .build()
        //然后在Request.Builder 中调用post() 方法 并将RequestBody对象传入
        val request = Request.Builder()
            .url("https://www.biadu.com")
            .build()

完整的GET实现:

				val client = OkHttpClient()
	            val request = Request.Builder()
                    .url("https://www.baidu.com")
                    .build()
                val response = client.newCall(request).execute()
                val responseData = response.body?.string()
                showResponse(responseData.toString())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值