NetworkSecurityConfig:未指定网络安全配置,使用平台默认错误响应代码:400

新手上路,请多包涵

我正在尝试连接到这些地方中的任何一个并获取 JSON 数据:-

 https://content.guardianapis.com/search?q=debate&tag=politics/politics&from-date=2014-01-01&api-key=test
https://content.guardianapis.com/search?q=debates&api-key=test
https://content.guardianapis.com/search?api-key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

这三个我都可以通过浏览器访问,但是当我尝试通过 Android 应用程序访问它们时,出现以下错误:-

 NetworkSecurityConfig: No Network Security Config specified, using platform default
Error response code: 400

我已将其添加到 manifest.xml 中:-

 <uses-permission android:name="android.permission.INTERNET"/>

我还将其添加到 manifest.xml 中:-

 android:networkSecurityConfig="@xml/network_security_config"

并创建了 res/xml/network_security_config.xml,其中包含:-

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">content.guardianapis.com</domain>>
    </domain-config>

将错误更改为:-

 D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
Error response code: 400

我知道它不见了:-

 <trust-anchors>
    <certificates src="@raw/my_ca"/>
</trust-anchors>

但我不知道证书在哪里或什么,或者是否需要。

不太确定发生了什么,任何帮助将不胜感激。

另外:- 我能够很好地连接并从此 URL 获取 JSON:-

 https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&eventtype=earthquake&orderby=time&minmag=6&limit=10

我得到的只是:-

 No Network Security Config specified, using platform default

购买不是错误 400,而是通过 200。所以这让我觉得发生了一些奇怪的事情,但不确定在哪里。

原文由 Markus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

试试这些解决方案

解决方案 1 )

将以下属性添加到 --- 中的 AndroidManifest.xml <application 标签:

 android:usesCleartextTraffic="true"

解决方案 2 )

添加 android:networkSecurityConfig="@xml/network_security_config"<application 标记 app/src/main/AndroidManifest.xml

 <application
        android:name=".ApplicationClass"
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

network_security_config.xml app/src/main/res/xml/

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在此处输入图像描述

有关详细信息,请参阅此答案: Download Manger not working in Android Pie 9.0 (Xiaomi mi A2)

原文由 Quick learner 发布,翻译遵循 CC BY-SA 4.0 许可协议

编辑答案 从代码中删除 <domain includeSubdomains="true">secure.example.com</domain>

仅使用:

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

它适用于任何 URL 或 IP。

尝试设置 cleartextTrafficPermitted=false

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
       <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

原文由 Insane Developer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题