Как исправить «незашифрованный HTTP-трафик к x не разрешен» - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь отправить запрос на http-сервер, но когда я пытаюсь получить поток ввода, я получаю сообщение об ошибке java.io.IOException: Cleartext HTTP traffic to x not permitted

Я уже пытался вставить android:usesCleartextTraffic="true" в свойманифест, а также настройка безопасности сети и установка для android: targetSandboxVersion значения 1

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

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">Server adress</domain>
    </domain-config>
</network-security-config>

app / src /main / AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.packagename"
    android:targetSandboxVersion="1">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"
        >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

Выход Logcat

D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
W/System.err: java.io.IOException: Cleartext HTTP traffic to x not permitted
W/System.err:     at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:124) 
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)

Любая помощь будет признательна

Ответы [ 4 ]

0 голосов
/ 20 сентября 2019

Решил мою собственную проблему, выразив стыд за потомство.

Случайно вставил URL-адрес в <domain includeSubdomains="true"></domain> вместо домена.

0 голосов
/ 20 сентября 2019

Создайте файл в своем проекте res / xml / security_config.xml -

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
    </domain-config>
</network-security-config>

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/security_config"
        ...>
        ...
    </application>
</manifest>

Также, если у вас есть android: targetSandboxVersion in, уменьшите его до 1

0 голосов
/ 20 сентября 2019

Попробуйте использовать только

android:usesCleartextTraffic="true"

удалить это 2

android:targetSandboxVersion="1"
android:networkSecurityConfig="@xml/network_security_config"

Моя работает в любом API, только с использованием Android: usingCleartextTraffic = "true"

0 голосов
/ 20 сентября 2019

Может быть, вы ошиблись.Вот правильный формат, полученный из другого источника.

 <?xml version="1.0" encoding="utf-8"?>
 <network-security-config>
<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
 <uses-permission android:name="android.permission.INTERNET" />
 <application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
 </application>
</manifest>

Если у вас есть android: targetSandboxVersion, то уменьшите его до1

AndroidManifest.xml -

   <?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...

...