不允许到我的本地主机的明文HTTP通信

时间:2020-02-06 08:18:10

标签: android http android-volley

我正在使用Volley向本地主机上的地址进行GET请求,但失败并显示以下错误:

Cleartext HTTP traffic to 192.168.1.45 not permitted

我在这里遵循了指南:Android 8: Cleartext HTTP traffic not permitted 并执行以下操作:

创建网络安全xml文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">http://192.168.1.45/companyweb/greetings</domain>
    </domain-config>
</network-security-config>

将其添加到我的清单中,并且还允许明文访问量:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.omerfaran.myudemyapp">

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

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        android:usesCleartextTraffic="true"

我仍然遇到相同的错误。从“ http”更改为“ https”会出现此错误:

socket failed: EPERM (Operation not permitted)

我在MainActivity中的代码:

val url = "http://192.168.1.45/companyweb/greetings"
val rq = Volley.newRequestQueue(this)
val sr = StringRequest(Request.Method.GET, url, Response.Listener { response ->
    fragmentText.text = response
    Log.d("TAG", "success")
}, Response.ErrorListener { error -> Log.d("TAG", "fail" + error.toString()) })
rq.add(sr)

接下来我该怎么办?

3 个答案:

答案 0 :(得分:2)

您应该仅包含IP地址,即:

<domain includeSubdomains="true">192.168.1.45</domain>

答案 1 :(得分:1)

我在最近的项目中遇到了类似的问题,请尝试添加:

android:usesCleartextTraffic =“ true”

在application标记下的AndroidManifext.xml文件中。

答案 2 :(得分:0)

我在这里找到了答案: java.net.SocketException: socket failed: EPERM (Operation not permitted)

显然,我要做的是重新启动模拟器(或卸载应用程序)