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

不允许向我的本地主机发送明文HTTP通信

荀辰钊
2023-03-14

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

Cleartext HTTP traffic to 192.168.1.45 not permitted

我在这里遵循了指南:Android 8:不允许明文HTTP流量,并做了以下操作:

已创建网络安全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个答案

汪凌
2023-03-14

我在这里找到了答案:java。网SocketException:套接字失败:EPERM(不允许操作)

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

柯昆
2023-03-14

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

android:UseSLearTextTraffic=“true”

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

谷泳
2023-03-14

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

<domain includeSubdomains="true">192.168.1.45</domain>
 类似资料:
  • 我正在用Kotlin做一个Android应用程序。我做了一个。NET Web Api,我从Kotlin连接到它。 我的问题是,当我向我的Web API发送请求时,我会得到一个异常“Cleartext HTTP traffic to localhost不允许”。

  • 我的程序从用户那里获取一个URL,所以它可以对互联网上的任何网站提出请求。我试图使这成为可能,我查找了所有关于“Android HTTP Cleartext”错误的答案,并做出了这一点,但它仍然不允许我连接我的测试本地PHP服务器,我在这里遗漏了什么? 我的安全配置:

  • 对于模拟器,我使用Genymotion模拟器(它使用VirtualBox)。 下面是使用的按钮的代码。我已经检查了所有的东西,但仍然一无所获。

  • 问题内容: 为了解决CORS问题,我在那儿写了 在我的服务器站点中 但是在我的开发过程中,我看到了这个错误 我以为allow-origin:*会解决一切吗?但是为什么说标头包含多个值? 问题答案: 意外两次启用CORS时,这是一个常见问题。检查以确保未在apache中启用它,或者未设置标头两次。作为健全性检查,您可以尝试删除标头并将其重新添加回去,然后再提供响应。 例如: