Android P(バージョン27以上)ネットワーク要求http制限


前書き:最近新しいプロジェクトができたので、最新のAndroid studioでもgradleとandroid sdkを新しいバージョンで開発しました.しかし、インターネットでkhttp 3のデータを要求すると失敗します.関連文書を見て原因と解決策が見つかったので、今日の文章を引き出しました.
ネットワーク要求失敗のエラーログを先に送ってください:
java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
この記事はこの失敗日記が生まれたので、ここから始めます.ゆっくり下を見てください. 
このエラーログが発生した理由は?
関連文書を検索すると、Android P(バージョン27以上)により、明文流量のネットワーク要求が制限されており、非暗号化されたトラフィック要求はいずれもシステムによって禁止されている.したがって、現在のアプリケーションの要求がhttp要求であって、httpsではない場合、この要求はシステムが現在のアプリケーションを禁止することになる.
下記の公式見解をご覧ください.
Androidはユーザーの設備とデータの安全を守るために努力しています.データの安全を保証する方法の一つは、Androidデバイスに入るかまたは離れるすべてのデータを伝送においてトランスポート層の安全性(TLS)を使用することである.Android P開発者のプレビューで発表したように、Android Pに対するアプリケーションのデフォルトの暗号化されていない接続を阻止することによって、これらの保護をさらに改善します.これは私たちが長年にわたってAndroidユーザーをよりよく保護するために作った様々な変更です.不測の暗号化接続を防止するために、Android Mashmallowにおいて、Android Mashmallow属性を導入しました.Android Nougtでは、ネットワークトラフィックを暗号化せずに送信するつもりでないことをアプリケーションに指示する機能を拡張しました.Android NougtとOreoでは、明文接続を許可します.
ですから、不愉快な結論が出ました.
これからはhttpsを使いますが、Android Pシステムの設備では、暗号化されていない明文流量のhttpネットワーク要求を適用すると、このアプリケーションはネットワーク要求ができなくなり、httpsは影響を受けません.同様に、webviewがネストされている場合、webviewはhttps要求のみを使用することができる.
もちろん、問題があれば解決ルートがあります.このcase解決案:
one:プロジェクトをhttpsに変えてお願いします.two:プロジェクトのtarget Sdk Versionは27以下に変更しました.three:resのxmlディレクトリの下で、新しいxmlファイルを作成します.


    

manifestリストのファイル配置application:
このcaseの解決案は今はこの3つを理解しています.もし補足があれば、追加的に評論してお互いに勉強してもいいです.
今書いているのはこのcaseの原因と解決策だけです.このセキュリティ特性の文書リンクを提供します.興味があるのは全体を見てみてもいいです.
https://developer.android.google.cn/training/articles/security-config
はい、この文章はこれで終わります.somebodyまでお願いします.    see   あなた