侧边栏壁纸
博主头像
Eoser's page!博主等级

@学习@生活@自己

  • 累计撰写 113 篇文章
  • 累计创建 29 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Android OKHttp 第一弹:Android项目导入与使用(Kotlin代码)

eoser
2023-04-20 / 0 评论 / 0 点赞 / 21 阅读 / 2377 字

OKHttp相关资料

Github项目】 【使用文档

Android代码实现

  • 创建Kotlin项目
  • 导入库
    plugins {
    ......
    }
    android {
    ......
    }
    dependencies {
    // 添加OkHttp
    implementation("com.squareup.okhttp3:okhttp:4.10.0")
    ......
    }
  • AndroidManifest.xml添加权限与相关配置
    
    
    
    
    
    
        ......
    
    
  • 实现逻辑代码,MainActivity.kt
    package org.eu.uiai.okhttplearn
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.os.Handler
    import android.os.HandlerThread
    import android.util.Log
    import okhttp3.OkHttpClient
    import okhttp3.Request
    import okhttp3.Response
    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handle()
    }
    private fun handle(){
        // 创建名字叫“net_thread”的Handler子线程
        var myThread = HandlerThread("net_thread")
        //启动线程
        myThread.start()
        //将联网逻辑放到实现的子线程中运行,在主线程运行会报错
        Handler(myThread.looper).post(Runnable {
            //创建请求的客户端
            var client = OkHttpClient()
            //构建请求对象
            var req = Request.Builder().url("https://www.baidu.com").build()
            try {
                //开始请求连接
                val resp = client.newCall(req).execute()
                //请求结果body转化字符串
                var bodyStr= resp.body?.string()
                //字符串存在则输出信息log
                bodyStr?.let { Log.e("OkHttpResponse", it) }
            }catch (e:Exception){
                e.printStackTrace()
            }
        })
    }
    }

    总结

    1. 添加联网权限
    2. 解决HTTPS请求报错 android:usesCleartextTraffic="true"
    3. 创建启动子线程 var myThread = HandlerThread("net_thread")
    4. 联网逻辑不能放主线程,要放到创建的子线程中 Handler(myThread.looper).post(......)
0

评论区