Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Kotlin中成功发出okHttp请求_Android_Kotlin_Get_Okhttp_Mobile Application - Fatal编程技术网

Android 如何在Kotlin中成功发出okHttp请求

Android 如何在Kotlin中成功发出okHttp请求,android,kotlin,get,okhttp,mobile-application,Android,Kotlin,Get,Okhttp,Mobile Application,问题: 1.请求未命中我的python flask服务器。 2.每当运行此代码时,我的应用程序就会崩溃。 *注意:我已经使用Postman测试了localhost地址,这是成功的 我正在尝试在我的kotlin android应用程序中创建一个okHttp请求。 我已在build.gradle文件中实现了所需的依赖项: implementation'com.squareup.okhttp3:okhttp:3.10.0 编辑:我在清单文件中包含了Internet权限 我已经尝试将我的IP作为URL

问题: 1.请求未命中我的python flask服务器。 2.每当运行此代码时,我的应用程序就会崩溃。 *注意:我已经使用Postman测试了localhost地址,这是成功的

我正在尝试在我的kotlin android应用程序中创建一个okHttp请求。 我已在build.gradle文件中实现了所需的依赖项:

implementation'com.squareup.okhttp3:okhttp:3.10.0

编辑:我在清单文件中包含了Internet权限

我已经尝试将我的IP作为URL的一部分,以及一些不同的localhost链接,并确定URL不是问题所在。
如果我没有弄错的话,应用程序崩溃错误会发生在build()期间,但我无法理解原因

理想情况下,此代码将命中RESTAPI并返回数据(打印为文本) 在我的登录屏幕上。 经过几天的研究和尝试其他请求方法,我无法找到解决方案

val mTextviewResult: TextView = findViewById(R.id.text_view_result)
            //http client
            var client = OkHttpClient()

            val url = "http://localhost:5000/test"
            val request = Request.Builder()
                .url(url)
                .build()
            Log.d(request.toString(), ":  I build Request")

            client.newCall(request).enqueue(object : Callback {
                override fun onFailure(call: Call, e: IOException) {
                    Log.d(url, ":  I fail")
                    e.printStackTrace()
                }

                @Throws(IOException::class)
                override fun onResponse(call: Call, response: Response) {
                    if (response.isSuccessful()) {
                        Log.d(url, ": I success")
                        val myResponse = response.body()?.string()
                        this@LoginActivity.runOnUiThread(object : Runnable {
                            override fun run() {
                                mTextviewResult.setText(myResponse)
                            }
                        })
                    }
                }
            })

要访问
localhost
,您应该使用
localhost
的本地IPv4+服务器端口

如何获取此IPv4:

KOTLIN异步请求:

private val client = OkHttpClient()

fun run() {
    val request = Request.Builder()
        .url("http://IPv4_FROM_THE_LINK_ABOVE:5000/test")
        .build()

    client.newCall(request).enqueue(object : Callback {
        override fun onFailure(call: Call, e: IOException) {
            e.printStackTrace()
        }

        override fun onResponse(call: Call, response: Response) {
            response.use {
                if (!response.isSuccessful) throw IOException("Unexpected code $response")

                for ((name, value) in response.headers) {
                    println("$name: $value")
                }

                println(response.body!!.string())
            }
        }
    })
}

安装OkHttp:

要访问
localhost
您应该使用本地IPv4+服务器端口访问
localhost

如何获取此IPv4:

KOTLIN异步请求:

private val client = OkHttpClient()

fun run() {
    val request = Request.Builder()
        .url("http://IPv4_FROM_THE_LINK_ABOVE:5000/test")
        .build()

    client.newCall(request).enqueue(object : Callback {
        override fun onFailure(call: Call, e: IOException) {
            e.printStackTrace()
        }

        override fun onResponse(call: Call, response: Response) {
            response.use {
                if (!response.isSuccessful) throw IOException("Unexpected code $response")

                for ((name, value) in response.headers) {
                    println("$name: $value")
                }

                println(response.body!!.string())
            }
        }
    })
}

Installok http:

您是否在清单文件中定义了权限
?有时这是主要问题XD忘了提及这一点,但是的,我没有提及,而且您忘了添加崩溃日志:D这将非常有帮助;)考虑添加一个崩溃日志来获得一个更详细的答案:你在模拟器中使用的是100.2.2吗?您是否在清单文件中定义了权限
?有时这是主要问题XD忘了提及这一点,但是的,我没有提及,而且您忘了添加崩溃日志:D这将非常有帮助;)考虑添加一个崩溃日志来获得一个更详细的答案:你在模拟器中使用的是100.2.2吗?