代码之家  ›  专栏  ›  技术社区  ›  Markus

NetworkSecurityConfig:未指定网络安全配置,使用平台默认值

  •  0
  • Markus  · 技术社区  · 6 年前

    我正在尝试连接到这些地方并获取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>
    

    但我不知道证书在哪里,在什么地方,如果需要的话。

    不太确定发生了什么,任何帮助都会被感激的。

    此外: 我可以连接Fine并从该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。所以我觉得有些奇怪的事情发生了,但不知道在哪里。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Quick learner    6 年前

    尝试这些解决方案

    方案1)

    android:usesCleartextTraffic="true"
    

    在应用程序标记中添加此标记 manifest 文件

    方案2)

    添加 android:networkSecurityConfig="@xml/network_security_config" 在应用程序标记中

    <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

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

    创造 xml 在res目录下,然后 网络安全配置.xml 在XML文件夹中

    请参阅此答案以了解更多信息 Files are not downloading on Android Pie 9.0 (Xiaomi mi A2) Using Download Manger

        2
  •  1
  •   Insane Developer    6 年前

    编辑答案 去除 <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="false">
           <domain includeSubdomains="true">secure.example.com</domain>
        </domain-config>
    </network-security-config>