前言:最近用java学完安卓之后,时间很充裕,觉得java写安卓代码量相对多,于是转学kotlin了OkHttp是一个优秀的网络请求框架,相对于HttpUrlConnection好用多了,并且还支持多线程高并发,所以作为一个安卓开发者非常有必要学习一下,下面开始讲解OKHttp的使用
第一步、导入依赖
implementation '.okhttp3:okhttp:3.14.+'
第二步、配置
只需要将第二行 usesCleartextTraffic="true"复制到你的配置文件这个位置即可
-
<uses-permission android:name=""/>
-
-
<application
-
-
-
android:usesCleartextTraffic="true"
-
-
-
android:allowBackup="true"
-
android:icon="@mipmap/ic_launcher"
-
android:label="@string/app_name"
-
android:roundIcon="@mipmap/ic_launcher_round"
-
android:supportsRtl="true"
-
android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"
-
-
tools:targetApi="m">
第三步、编写Util工具类
-
object OkHttpUtil{
-
//这里定义的 object表示是一个单例类
-
-
fun get(url : String , callback : Callback) {
-
-
Thread {
-
val client: OkHttpClient = ().build()
-
val request: = ()
-
.url(url)
-
.build()
-
(request).enqueue(callback)
-
}.start()
-
-
}
-
}
第四步、编写界面
-
<?xml version="1.0" encoding="utf-8"?>
-
<LinearLayout
-
xmlns:android="/apk/res/android"
-
xmlns:tools="/tools"
-
xmlns:app="/apk/res-auto"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical"
-
tools:context=".MainActivity">
-
-
<TextView
-
android:id="@+id/tv_show"
-
android:layout_width="match_parent"
-
android:layout_height="200dp"
-
android:hint="通过网络请求获取到的内容"
-
android:padding="5dp"
-
android:gravity="center"
-
android:layout_margin="40dp"/>
-
-
<Button android:layout_width="match_parent"
-
android:id="@+id/bt_send"
-
android:layout_height="50dp"
-
android:text="发送请求"
-
/>
-
</LinearLayout>
第五步、在MainActivity中调用该工具类获取数据
-
class MainActivity : AppCompatActivity() {
-
-
override fun onCreate(savedInstanceState: Bundle?) {
-
super.onCreate(savedInstanceState)
-
setContentView(.activity_main)
-
-
-
//接口: https://api./twqh 这里提供了一个接口,
-
//设置按钮,发送网络请求
-
bt_send.setOnClickListener {
-
-
OkHttpUtil.get("https://api./twqh" , object : Callback{
-
override fun onFailure(call: Call, e: IOException) {
-
-
}
-
-
override fun onResponse(call: Call, response: Response) {
-
val data : String = ()?.string().toString()
-
showData(data)
-
("OkHttp" , "获取到的数据为:$data")
-
}
-
-
})
-
}
-
}
-
-
fun showData(data : String ){
-
tv_show.text=data
-
}
-
}
最后,运行之后,点击按钮,就可以获取到接口上的文字了,第一次写博客,如有错误请指点谢谢