You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin实现HTTP GET请求取数插入TextView报错求极简解决方案

错误根因
  • 核心报错android.os.NetworkOnMainThreadException是因为Android系统禁止在UI主线程执行网络操作,你代码中的URL(t.toString()).readText()写在了协程外部,点击事件默认运行在主线程,直接触发了系统拦截
  • 额外存在逻辑错误:t.toString()拿到的是EditText控件的对象字符串,不是用户输入的网址,正确获取输入内容的写法是t.text.toString()
极简修复代码

无需引入OkHttp等第三方库,仅调整代码逻辑即可:

val HTTPget = findViewById<Button>(R.id.buttonPOst)
HTTPget.setOnClickListener {
    val t = findViewById<EditText>(R.id.editTextTextPersonName)
    val net1 = findViewById<TextView>(R.id.textViewzx)

    GlobalScope.launch(Dispatchers.IO) {
        try {
            // 读取用户输入的URL,在IO线程执行网络请求
            val result = URL(t.text.toString()).readText()
            Log.e("MainActivity", "ADID=$result")
            // 切回主线程更新TextView
            withContext(Dispatchers.Main) {
                net1.text = result
            }
        } catch (e: Exception) {
            // 异常捕获避免网络错误直接崩溃
            withContext(Dispatchers.Main) {
                net1.text = "请求出错:${e.message}"
            }
        }
    }
}
必要配置检查
  • 必须在AndroidManifest.xml中添加网络权限,否则会触发无权限错误:
<uses-permission android:name="android.permission.INTERNET" />
  • 如果你请求的是HTTP明文协议的地址,需要在AndroidManifest.xml的application节点添加属性放行明文流量:
<application
    ...
    android:usesCleartextTraffic="true">
  • 本方案为极简实现,生产环境建议替换GlobalScope为和页面生命周期绑定的协程作用域,避免内存泄漏。

内容的提问来源于stack exchange,提问作者AnxiousDino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:27:05