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

在kotlin(Android)中发送get请求

萧卜霸
2023-03-14

我需要在andoid应用程序发送超文本传输协议获取请求。

...
import java.net.HttpURLConnection
import java.net.URL

...

fun sendGet(view: View) {
        val url = URL("http://www.google.com/")

        with(url.openConnection() as HttpURLConnection) {
            requestMethod = "GET"  // optional default is GET

            println("\nSent 'GET' request to URL : $url; Response Code : $responseCode")

            inputStream.bufferedReader().use {
                it.lines().forEach { line ->
                    println(line)
                }
            }
        }
    }
}

清单

  <uses-permission android:name="android.permission.INTERNET" />
    <application

然后我按下发送请求按钮,应用程序崩溃。

日志

2020-06-08 13:37:58.8327039-7039/com。实例远程E/AndroidRuntime:致命异常:主进程:com。实例远程,PID:7039 java。lang.IllegalStateException:无法在androidx上为android:onClick执行方法。appcompat。应用程序。AppCompativeViewInflater$DeclaredOnClickListener。android上的onClick(appcompativiewInflater.java:402)。看法看法android上的performClick(View.java:7357)。看法看法android上的performClickInternal(View.java:7334)。看法看法在android上访问3600美元(View.java:808)。看法查看$PerformClick。在android上运行(View.java:28200)。操作系统。处理程序。android上的handleCallback(Handler.java:907)。操作系统。处理程序。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:223)。应用程序。活动线程。java上的main(ActivityThread.java:7478)。朗。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:549)。Android内部的操作系统。合子体。main(ZygoteInit.java:941)由以下原因引起:java。朗。反思。java上的InvocationTargetException。朗。反思。方法在androidx调用(本机方法)。appcompat。应用程序。AppCompativeViewInflater$DeclaredOnClickListener。android上的onClick(appcompativiewInflater.java:397)。看法看法performClick(View.java:7357)

共有1个答案

姬昊焱
2023-03-14

试试这个,

fun sendGet() {
        try {
            //disable the strict mode otherwise perform this operation on netWork Thread
            val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
            StrictMode.setThreadPolicy(policy)

            // GET Request
            val request = "http://www.google.com/"
            val url = URL(request)
            val conn = url.openConnection()
            conn.doOutput = true
            // Get the response
            val rd = BufferedReader(InputStreamReader(conn.getInputStream()))
            var line: String
            var sResult = ""
            while (rd.readLine().also { line = it } != null) {
                // Process line...
                sResult = "$sResult$line "
            }
            rd.close()
            Log.e("RESULT", sResult)
        } catch (e: Exception) {
            println("Error $e")
        }
    }
 类似资料:
  • 请求方式: "|3|1|url|\r" 参数: url 设置Get请求的url链接 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码, 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: softSerial.print("|3|1|http:/

  • 我试图在端口80上建立一个连接localhost并发送一个简单的http get请求,同时运行wireshark并查看报头。下面是我的代码: 但当我编译并运行它时,它会给我带来很多错误。这是Errros的图像。发生此错误后,我将send函数更改为这个 send(sockfd,“get/http/1.1\r\n host:localhost\r\n\r\n”,strlen(“get/http/1.1

  • 问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复:

  • 问题内容: 我打算将PHP用于一个简单的要求。我需要从URL下载XML内容,为此我需要向该URL发送HTTP GET请求。 如何在PHP中做到这一点? 问题答案: 除非只需要文件内容,否则可以使用。 对于更复杂的事情,我将使用cURL。

  • 我正在使用以下代码发送GET api请求。下面的url有一个参数,例如字符串url=”https://my/api“variable”test。我使用for循环遍历变量列表(超过2000个),并创建url以使用以下代码发送get API请求。我想并行发送多个API请求以减少总时间。请建议最好的方法。