0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android】HTTP通信を許可する

Last updated at Posted at 2025-04-22

HttpConnect.png

Android初心者の備忘録なので正確性に欠ける表現があるかもしれません、ご容赦ください。

背景

Android 9からネット通信時のデフォルトがHTTPS通信になりました。
(自分も今回の件を調べているなかで知りました。)

HTTPS通信をするとなると証明書を手に入れたり、申請をしたりする必要があります。

実際に公開するためならまだしも、
実装時の動作確認といった時のためにわざわざHTTPS化する必要もないと思います。

今回は個人的なプロジェクトで、
HTTPで(もといDockerで建てていたローカルと)通信できるよう設定する時に詰まり、
気づくまでに1日飛ばしたので備忘録も兼ねてまとめています。

(気づいた時には「あっ。。。 あ”あ”あ”」ってなりました)

HTTP通信の許可設定

ということで、意図的にHTTP通信を許可する設定を以下記事を参考に行います。
設定自体は、このサイトにある手順で問題なく行えます。

注意点(つまったところ)

res/xml/ 直下に network_security_config.xml を作成して設定する」こと自体は間違いではありません。
ただ、Build Variants を使用している場合は注意です。

画像には2つのnetwork_security_config.xml のファイルがあり、
一見どちらも同じですが片方には、debug の文字がついています。

network_security_config.png
*表示形式をAndroidに設定して表示*

releaseではない時、つまりテストや開発中などdebugでのビルド時は、
このdebug の文字がついた方のnetwork_security_config.xmlが参照されます。

つまり、debug の文字がついていない方のnetwork_security_config.xmlをいくら変えても意味がないということです。

加えて、releaseの方でHTTP通信を許可する設定を入れるのは、セキュリティリスクを抱えるだけなので特別な事情があるでもない限り良くないです。

わざわざリスクを作る必要もないですしね。

設定例

http://example.com にアクセスする場合

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>

ローカル環境にアクセスする場合

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

*設定しているサブドメインは以下に記載のサイトのものを引用*

IPアドレスは、各環境ごとに置き換えてください。
アクセスする際のURLは http://192.168.43.160:3000 という形式になります。

確認手順などは、以下記事に書かれています。

Build Variantsとは

Build Variants はざっくりいうと、
「アプリのベースを使いつつ、使用するAPIや文言などを開発用と公開用に簡単に切替えられる機能」でしょうか。
(自分はそのような認識です)

イメージ的には、レストランAの店主が

  • 「今日はお得意様用に開店します!」というとお店や料理は変わらないけど、入れる人はお得意様のみ。
  • 「今日は一般客様用に開店します!」というとお店や料理は変わらないけど、入れる人は一般客のみ。

みたいな感じでしょうか。
なんか逆にわかりにくい気しかしないですが。

Android初心者でまだまだわからないことだらけですが頑張っていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?