【发布时间】:2019-08-27 11:40:10
【问题描述】:
我正在尝试使用 nativescript-vue 访问开发服务器 API。我已经在 android 清单中添加了所有可能的权限,但它给出了错误:JS: Error: java.io.IOException: Cleartext HTTP traffic to url not allowed
这是我的清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:usesCleartextTraffic="true"
android:name="com.tns.NativeScriptApplication"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:cleartextTrafficPermitted="true"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
这是 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">192.168.xxx.xxx</domain>
</domain-config>
</network-security-config>
这里是 Nativescipt-vue 代码:
httpModule.request({
url: "http://192.168.XXX.XXX:XXXX/func",
method: "POST",
headers: { "Content-Type": "application/json" },
content: data
}).then((response) => {
const result = response.content.toJSON();
}, (e) => {
console.error(e);
});
【问题讨论】:
-
您是否在更新清单后尝试了干净的构建?在
android:usesCleartextTraffic="true"之间应该可以解决问题,除非您只想在我没有机会亲自尝试的特定域上允许明文流量。 -
@Manoj,是的,我尝试进行干净的构建。我也尝试单独放置
android:usesCleartextTraffic="true"行,但它似乎不起作用。 -
您使用的是模拟器/设备吗?您使用的是哪个版本的 Android?
-
我找到了解决方案。
tns platform remove android然后tns platform add android成功了。它可能没有阅读清单。感谢@Manoj 的帮助。 -
你确实提到你尝试过clean build,猜你一开始没有理解clean build的含义。
标签: nativescript nativescript-vue