OkHttp工具类Kotlin版

时间:2024-10-09 07:26:52

前言:最近用java学完安卓之后,时间很充裕,觉得java写安卓代码量相对多,于是转学kotlin了OkHttp是一个优秀的网络请求框架,相对于HttpUrlConnection好用多了,并且还支持多线程高并发,所以作为一个安卓开发者非常有必要学习一下,下面开始讲解OKHttp的使用
第一步、导入依赖

implementation '.okhttp3:okhttp:3.14.+'

第二步、配置

只需要将第二行 usesCleartextTraffic="true"复制到你的配置文件这个位置即可

  1. <uses-permission android:name=""/>
  2. <application
  3. android:usesCleartextTraffic="true"
  4. android:allowBackup="true"
  5. android:icon="@mipmap/ic_launcher"
  6. android:label="@string/app_name"
  7. android:roundIcon="@mipmap/ic_launcher_round"
  8. android:supportsRtl="true"
  9. android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"
  10. tools:targetApi="m">

 第三步、编写Util工具类

  1. object OkHttpUtil{
  2. //这里定义的 object表示是一个单例类
  3. fun get(url : String , callback : Callback) {
  4. Thread {
  5. val client: OkHttpClient = ().build()
  6. val request: = ()
  7. .url(url)
  8. .build()
  9. (request).enqueue(callback)
  10. }.start()
  11. }
  12. }

第四步、编写界面

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="/apk/res/android"
  4. xmlns:tools="/tools"
  5. xmlns:app="/apk/res-auto"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. android:orientation="vertical"
  9. tools:context=".MainActivity">
  10. <TextView
  11. android:id="@+id/tv_show"
  12. android:layout_width="match_parent"
  13. android:layout_height="200dp"
  14. android:hint="通过网络请求获取到的内容"
  15. android:padding="5dp"
  16. android:gravity="center"
  17. android:layout_margin="40dp"/>
  18. <Button android:layout_width="match_parent"
  19. android:id="@+id/bt_send"
  20. android:layout_height="50dp"
  21. android:text="发送请求"
  22. />
  23. </LinearLayout>

第五步、在MainActivity中调用该工具类获取数据

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(.activity_main)
  5. //接口: https://api./twqh 这里提供了一个接口,
  6. //设置按钮,发送网络请求
  7. bt_send.setOnClickListener {
  8. OkHttpUtil.get("https://api./twqh" , object : Callback{
  9. override fun onFailure(call: Call, e: IOException) {
  10. }
  11. override fun onResponse(call: Call, response: Response) {
  12. val data : String = ()?.string().toString()
  13. showData(data)
  14. ("OkHttp" , "获取到的数据为:$data")
  15. }
  16. })
  17. }
  18. }
  19. fun showData(data : String ){
  20. tv_show.text=data
  21. }
  22. }

最后,运行之后,点击按钮,就可以获取到接口上的文字了,第一次写博客,如有错误请指点谢谢