我正在使用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)
接下来我该怎么办?
答案 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)
显然,我要做的是重新启动模拟器(或卸载应用程序)