当前位置: 首页 > 知识库问答 >
问题:

Kotlin HTTP获取数据

夔修伟
2023-03-14

嘿,开发人员,我有一个问题,在静态编程语言中为Android找到一种方法来获取HTTP数据并将其插入到文本视图中。

   val HTTPget = findViewById<View>(R.id.buttonPOst) as Button
    HTTPget.setOnClickListener{

        val t = findViewById<View>(R.id.editTextTextPersonName) as EditText
        val result = URL(t.toString()).readText()


        // Device 1
        val net1 = findViewById<TextView>(R.id.textViewzx)
        GlobalScope.launch {
            val adid = result.toString()
            Log.e("MainActivity","ADID="+adid)
            withContext(Dispatchers.Main){
                net1.setText(adid)
            }
        }

我认为URL(t.toString()). readText()是正确的方法,但它给了我这个错误代码:

[PatchStore] create disable file for com.thordalenterprise.httpgetter uid is 10179
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.thordalenterprise.httpgetter, PID: 8301
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
at java.net.InetAddress.getAllByName(InetAddress.java:1152)
at com.android.okhttp.Dns$1.lookup(Dns.java:41)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector
    at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176)
atcom.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.jav
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.jav
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionIm
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30)
at java.net.URL.openStream(URL.java:1072)
at kotlin.io.TextStreamsKt.readBytes(ReadWrite.kt:150)
        at com.thordalenterprise.httpgetter.MainActivity.onCreate$lambda-1(MainActivity.kt:60)
        at com.thordalenterprise.httpgetter.MainActivity.$r8$lambda$yqRXLCuKxvg6aIX1POsLtCj1iGk(Unknown Source:0)
        at com.thordalenterprise.httpgetter.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
        at android.view.View.performClick(View.java:7192)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7166)
        at android.view.View.access$3500(View.java:824)
        at android.view.View$PerformClick.run(View.java:27592)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
I/Process: Sending signal. PID: 8301 SIG: 9

我应该使用okhttp库?但是我想要一个非常简单的方法来做这件事。

共有1个答案

赵献
2023-03-14

我想你错过了从人名字段获取文本尝试下面的代码

 val HTTPget = findViewById<View>(R.id.buttonPOst) as Button
HTTPget.setOnClickListener{

    val t = findViewById<View>(R.id.editTextTextPersonName) as EditText
    val result = URL(t.text.toString()).readText() //here change


    // Device 1
    val net1 = findViewById<TextView>(R.id.textViewzx)
    GlobalScope.launch {
        val adid = result.toString()
        Log.e("MainActivity","ADID="+adid)
        withContext(Dispatchers.Main){
            net1.setText(adid)
        }
    }
 类似资料:
  • 我有一个使用redux的应用程序 我也曾在本地获取数据。 在我的反应组件中,我使用来获取数据。但我什么也没得到。 如何在我的组件中获取数据? 演示:https://codesandbox.io/s/nervous-rosalind-lp16j?file=/src/App.js:242-328

  • 获取数据 有2个方法可以获取数据。 fetchRow() 方法可以返回一条数据, fetchAll() 可以返回多条数据。2个方法都可以使用原生 SQL 语句作为参数。 <?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration { /** * Migr

  • 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我试图从httpbin获得响应时。org/get,没关系。但当我试图从本地服务器获取响应时,网络请求失败。错误 发送到httpbin。组织/获取- 发送到本地主机:8000/api- 当我尝试从纯节点中的localhost:8000/api获取响应时。js通过请求模块。它工作得很好。

  • 原理 对于POST请求的处理,koa2没有封装获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req,将POST表单数据解析成query string(例如:a=1&b=2&c=3),再将query string 解析成JSON格式(例如:{"a":"1", "b":"2", "c":"3"}) 注意:ctx.request是context经过封装的请求对象,ctx.

  • 使用方法 在koa中,获取GET请求数据源头是koa中request对象中的query方法或querystring方法,query返回是格式化好的参数对象,querystring返回的是请求字符串,由于ctx对request的API有直接引用的方式,所以获取GET请求数据有两个途径。 1.是从上下文中直接获取 请求对象ctx.query,返回如 { a:1, b:2 } 请求字符串 ctx.que

  • 问题内容: 日志,为什么? 问题答案: 为了详细说明@Raynos所说的内容,您定义的函数是一个异步回调。它不会立即执行,而是在文件加载完成后执行。当您调用readFile时,将立即返回控件并执行下一行代码。因此,当您调用console.log时,尚未调用您的回调,并且尚未设置此内容。欢迎使用异步编程。 示例方法 或者更好的是,如Raynos的示例所示,将您的调用包装在一个函数中并传递您自己的回调

  • 问题内容: 我正在尝试使用fetch发布 JSON对象。 据我了解,我需要将一个字符串化的对象附加到请求的主体,例如: 当使用jsfiddle的json回显时,我希望看到返回的对象(),但这不会发生-chrome devtools甚至不会在请求中显示JSON,这意味着它没有被发送。 问题答案: 借助ES2017 支持,这是如何实现JSON负载的方法: 但是,问题是由 很久以来修复的chrome b

  • Ajax 全称“Asynchronous JavaScript and XML”,译为“异步 JavaScript 和 XML”,程序员们习惯称之为“阿贾克斯”,通过 Ajax 我们可以异步在服务器与客户端之间传递数据。在 Ajax 中,普遍使用 JSON 作为传输数据的格式。 一般情况下,我们可以通过 JavaScript 来发送 Ajax 请求,并接收响应的信息。下面通过一个示例来演示一下(有