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

Android 不允许到我的本地主机的明文HTTP通信,android,http,android-volley,Android,Http,Android Volley,我正在使用Volley对本地主机上的地址执行GET请求,但由于以下错误而失败: Cleartext HTTP traffic to 192.168.1.45 not permitted 我跟随导游来到这里: 并做了以下工作: 已创建网络安全xml文件: <?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitt

我正在使用Volley对本地主机上的地址执行GET请求,但由于以下错误而失败:

Cleartext HTTP traffic to 192.168.1.45 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>
我在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)

接下来我可以做什么?

您应该只包括IP地址,即:

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

您应该只包括IP地址,即:

<domain includeSubdomains="true">192.168.1.45</domain>
192.168.1.45
我在这里找到了答案:

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

我在这里找到了答案:


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

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

android:UseClearTextTraffic=“true”


到应用程序标记下的AndroidManifext.xml文件。

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

android:UseClearTextTraffic=“true”


应用程序标记下的AndroidManifext.xml文件。

192.168.1.45
不是本地主机,而是我的IP,不是吗?url在我的浏览器中起作用什么是“我的”ip?每个设备都有自己的ip。个人电脑,安卓设备,笔记本电脑。。。你在说什么?什么是“我的”浏览器?在每个设备上都可以运行一个或多个浏览器。你说的是哪一个?
192.168.1.45
不是本地主机,而是我的IP,不是吗?url在我的浏览器中起作用什么是“我的”ip?每个设备都有自己的ip。个人电脑,安卓设备,笔记本电脑。。。你在说什么?什么是“我的”浏览器?在每个设备上都可以运行一个或多个浏览器。那么你说的是哪一个呢?它不起作用,当我尝试时,我得到错误:java.net.SocketException:socket失败:EPERM(不允许操作)我认为这与将http更改为https相同?哦,我找到了答案,我必须重新启动模拟器…你的建议是对的,在这种情况下,它实际上与更改为https相同,谢谢。它不起作用,当我尝试时,我得到错误:java.net.SocketException:socket失败:EPERM(不允许操作)我认为这与更改http为https相同?哦,我找到了答案,我必须重新启动模拟器……你的建议是对的,在这种情况下,它实际上与更改为https相同,谢谢
<domain includeSubdomains="true">192.168.1.45</domain>