从零开始学安卓(kotlin)九——网络技术

本文详细介绍了安卓开发中使用Kotlin进行网络技术操作,包括WebView的使用、HttpURLConnection与OkHttp的网络访问,重点讲解了Retrofit网络库的高效应用,如创建接口、处理复杂接口地址及构建最佳实践。通过示例展示了如何实现网络请求回调和数据解析,简化了网络操作的代码逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebView的用法

使用HTTP访问网络

HttpURLConnection

官方建议使用的HttpURLConnection的用法
首先需要获取HttpURLConnection的实例,一般只需创建一个URL对象,并传入目标的网络地 址,然后调用一下openConnection()方法即可,如下所示:

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 = 800
//之后再调用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")

OkHttp

有许多出色的网络通信库都可以替代原生的HttpURLConnection,而其中OkHttp无疑 是做得最出色的一个。
OkHttp的具体用法:

//首先需要创建一个OkHttpClient的实例
val client = OkHttpClient()
//发起一条HTTP请求,就需要创建一个Request对象
//val request = Request.Builder().build()
//上述代码只是创建了一个空的Request对象,并没有什么实际作用,我们可以在最终的 build()方法之前连缀很多其他方法来丰富这个Request对象。比如可以通过url()方法来设 置目标的网络地址
val request = Request.Builder()
    	.url("https://www.baidu.com")
		.build()
//之后调用OkHttpClient的newCall()方法来创建一个Call对象,并调用它的execute()方法 来发送请求并获取服务器返回的数据
val response = client.newCall(request).execute()
//Response对象就是服务器返回的数据了,我们可以使用如下写法来得到返回的具体内容
val responseData = response.body?.string()

如果是发起一条POST请求,会比GET请求稍微复杂一点,我们需要先构建一个Request Body 对象来存放待提交的参数

val requestBody = FormBody.Builder()
        .add("username", "admin")
        .add("password", "123456")
        .build()
//然后在Request.Builder中调用一下post()方法,并将RequestBody对象传入
val request = Request.Builder()
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值