Android高バージョンネットワーク失敗エラー:Cleartext HTTP traffic to xxx not permitted解決方法
1501 ワード
変換:Android高バージョンネットワーク失敗報告エラー:Cleartext HTTP traffic to xxx not permitted解決方法
前言:
ユーザーデータとデバイスの安全を確保するため、Googleは次世代Androidシステム(Android P)のアプリケーションに対して、暗号化接続のデフォルト使用を要求する.これは、Android Pがすべての暗号化されていない接続をAppで使用することを禁止することを意味する.そのため、Android Pシステムを実行するAndroidデバイスは、トラフィックの受信や送信にかかわらず、将来的には明示的な伝送ができず、次世代を使用する必要があるトランスポートレイヤセキュリティプロトコル(Transport Layer Security)は、Android NougatおよびOreoは影響を受けません.
したがってAndroid PでHttpUrlConnectionを使用してhttpリクエストを行うと以下の異常が発生します
OKHttpリクエストを使用すると表示されます
Android Pシステムのデバイスでは、アプリケーションが非暗号化の明文トラフィックのhttpネットワークリクエストを使用している場合、そのアプリケーションはネットワークリクエストを行うことができず、http sは影響を受けず、同様にアプリケーションがwebviewをネストしている場合、webviewもhttpsリクエストしか使用できません.
この問題に対して、以下の3つの解決方法があります.
(1)APPのhttpリクエストへの変更
(2)targetSdkValersonが27以下になる
(3)ネットワークセキュリティ構成の変更
前の2つの方法は理解しやすく、実装しやすく、具体的には3つ目の方法で、ネットワークセキュリティの構成を変更します.
1.resフォルダの下にxmlフォルダを作成し、network_security_config.xmlファイルを作成します.ファイルの内容は次のとおりです.
2.次に、AndroidManifest.xmlファイルのアプリケーションラベルに次の属性を追加します.
完了しました.この時点でAppはネットワークにアクセスできます.
前言:
ユーザーデータとデバイスの安全を確保するため、Googleは次世代Androidシステム(Android P)のアプリケーションに対して、暗号化接続のデフォルト使用を要求する.これは、Android Pがすべての暗号化されていない接続をAppで使用することを禁止することを意味する.そのため、Android Pシステムを実行するAndroidデバイスは、トラフィックの受信や送信にかかわらず、将来的には明示的な伝送ができず、次世代を使用する必要があるトランスポートレイヤセキュリティプロトコル(Transport Layer Security)は、Android NougatおよびOreoは影響を受けません.
したがってAndroid PでHttpUrlConnectionを使用してhttpリクエストを行うと以下の異常が発生します
W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted
OKHttpリクエストを使用すると表示されます
java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
Android Pシステムのデバイスでは、アプリケーションが非暗号化の明文トラフィックのhttpネットワークリクエストを使用している場合、そのアプリケーションはネットワークリクエストを行うことができず、http sは影響を受けず、同様にアプリケーションがwebviewをネストしている場合、webviewもhttpsリクエストしか使用できません.
この問題に対して、以下の3つの解決方法があります.
(1)APPのhttpリクエストへの変更
(2)targetSdkValersonが27以下になる
(3)ネットワークセキュリティ構成の変更
前の2つの方法は理解しやすく、実装しやすく、具体的には3つ目の方法で、ネットワークセキュリティの構成を変更します.
1.resフォルダの下にxmlフォルダを作成し、network_security_config.xmlファイルを作成します.ファイルの内容は次のとおりです.
2.次に、AndroidManifest.xmlファイルのアプリケーションラベルに次の属性を追加します.
完了しました.この時点でAppはネットワークにアクセスできます.