从Android 9 Pie开始,没有加密的请求将永远无法工作。默认情况下,系统将期望您默认使用TLS。你可以在这里阅读这个功能,所以如果你只通过HTTPS发出请求,你是安全的。但是那些通过不同网站发出请求的应用程序呢,比如类似浏览器的应用程序。
如何在Android 9派中启用对所有类型的HTTP和HTTPS连接的请求?
从Android 9 Pie开始,没有加密的请求将永远无法工作。默认情况下,系统将期望您默认使用TLS。你可以在这里阅读这个功能,所以如果你只通过HTTPS发出请求,你是安全的。但是那些通过不同网站发出请求的应用程序呢,比如类似浏览器的应用程序。
如何在Android 9派中启用对所有类型的HTTP和HTTPS连接的请求?
当前回答
这对我很有效,
将此XML文件添加到: andriod / app / src / main / res / xml / network_security_config.xml
network_security_config.xml
xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain1</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain2</domain>
</domain-config>
</network-security-config>
然后将此代码添加到AndroidMenifest.xml
<application
...
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
...
>
<!-- for http support-->
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
...
</application>
其他回答
简单的方法
添加usesCleartextTraffic到AndroidManifest.xml
<application
...
android:usesCleartextTraffic="true"
...>
指示应用程序是否打算使用明文网络流量,例如明文HTTP。API级别为27或更低的应用程序的默认值为“true”。API级别为28或更高的应用程序默认为“false”。
一个简单的方法是设置android:usesCleartextTraffic="true"在你的AndroidManifest.xml
android:usesCleartextTraffic="true"
你的androidmanifest。xml是这样的
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.dww.drmanar">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme"
tools:targetApi="m">
<activity
android:name=".activity.SplashActivity"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我希望这对你有所帮助。
只需在AndroidManifest.xml文件的应用程序标签中设置usesCleartextTraffic标志。 不需要为Android创建配置文件。
<application
android:usesCleartextTraffic="true"
.
.
.>
我遇到了同样的问题,我注意到我的安全配置有不同的标签,就像@Xenolion的答案说
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
所以我把标签“domain-config”改为“base-config”,就像这样:
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</base-config>
</network-security-config>
这对我很有效,
将此XML文件添加到: andriod / app / src / main / res / xml / network_security_config.xml
network_security_config.xml
xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain1</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain2</domain>
</domain-config>
</network-security-config>
然后将此代码添加到AndroidMenifest.xml
<application
...
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
...
>
<!-- for http support-->
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
...
</application>