一、 前期准备工作
在gradle文件里的dependencies中加入
implementation'com.squareup.okhttp3:okhttp:4.9.1'
然后就记得开网络权限
在xml文件中加入权限请求
<uses-permission android:name="android.permission.INTERNET" />
1.1 http请求的设置
这样还不够,因为android9.0后不支持http网络请求,会报错,只需要https请求可忽略这一步。
需要在res文件下建立一个xml文件,在这个文件夹下建立一个network_security_config.xml文件,如图所示
![](https://img.haomeiwen.com/i22786633/1e7e158daca0becb.png)
文件里可以自定义哪些网址能够请求,简单的写法是
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
二、 简单的请求函数
这里封装一个简单的函数,展示使用流程
protected open fun post(url:String, content:String) {
Log.d("---tag---url:", url)
var url = url
var mediaType ="text/x-markdown; charset=utf-8".toMediaTypeOrNull()
var request =Request.Builder()
.url(url)
.post(RequestBody.create(mediaType,""))
.build()
val okHttpClient = OkHttpClient()
okHttpClient.newCall(request).enqueue(object :Callback {
override fun onFailure(call:Call, e:IOException) {
Log.d("---tag---请求失败","onFailure: " + e.message)
}
@Throws(IOException::class)
override fun onResponse(call:Call, response:Response) {
Log.d("----tag---消息体:", response.protocol.toString() +" " + response.code +" " + response.message+" "+ (response.body?.string() ?:""))
val headers = response.headers
Looper.prepare()
Looper.loop()
}
})
}
三、测试api
这里提供一个测试用的api接口
http://cre.dp.sina.cn/api/v3/get?cateid=3Nh&cre=tianyi&mod=wfashion&merge=3&statics=1&length=20&tm=1489716199&ad=%7B%22rotate_count%22:5932,%22page_url%22:%22http://fashion.sina.cn/%22,%22channel%22:%22131036%22,%22platform%22:%22wap%22,%22timestamp%22:1515927821661,%22net%22:null%7D&action=1&up=2&down=0&length=12&_=1515927824733&callback=Zepto15159278216351
一套简单的请求流程就完成了
如果描述有误,恳请批评指正,万分感谢!
网友评论