kotlin(OkHttp)-简单的网络请求:从请求到数据显示

2021-06-30  本文已影响0人  许夜

一、 前期准备工作

在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文件,如图所示

文件里可以自定义哪些网址能够请求,简单的写法是

<?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

一套简单的请求流程就完成了

如果描述有误,恳请批评指正,万分感谢!

上一篇下一篇

猜你喜欢

热点阅读