Help us understand the problem. What is going on with this article?

Android 9(Pie)でHTTP通信を有効にする

Android 9(Pie)でデフォルトでHTTPS通信になったので(App Transport Security(以下ATS)みたいな感じ)、HTTP通信を許可する方法を書いておく。
時代の流れ的にはHTTPS対応する方向がベターだと思う。

ATSのような全許可の仕組みは無い(たぶん)。

エラー

これまで通り通信しようとすると、以下のようなエラーが表示される。

java.io.IOException: Cleartext HTTP traffic to example.com not permitted

対応

res/xmlディレクトリを掘って、以下のようなファイルを置く。

res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">example.com</domain>
    </domain-config>
</network-security-config>
  • example.com部分が対象のドメインなので適宜書き換える。
  • cleartextTrafficPermitted="true"がHTTP平文通信を許可する設定(ATSのNSTemporaryExceptionAllowsInsecureHTTPLoadsのようなもの)。
  • includeSubdomains="true"はサブドメインを含む場合に記載(ATSのNSIncludesSubdomainsのようなもの)。

作った設定をAndroidManifestから参照させる。

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

これでHTTP通信できるようになる。

トラブルシュート

設定後に以下のようなメッセージが表示されている場合は、ファイルの場所に問題があるかAndroidManifestファイルの記載内容に問題があって設定ファイルを読み込めていない。

D/NetworkSecurityConfig: No Network Security Config specified, using platform default

読み込みがうまくいっている場合は以下のような表示になる。

D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config

参考

b_a_a_d_o
怠惰で短気で傲慢なえんじにあ
https://www.gowest1.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした