AndroidアプリでのクリアテキストHTTP通信の問題と解決策


  1. クリアテキストトラフィックを許可するネットワークセキュリティの設定を確認する。 AndroidManifest.xmlファイルで、usesCleartextTraffic属性が設定されていることを確認します。もし設定されていない場合は、デフォルトではクリアテキストトラフィックが許可されないため、明示的に設定する必要があります。

    <application
       ...
       android:usesCleartextTraffic="true"
       ...>
       ...
    </application>
  2. HTTPSを使用するように通信をアップグレードする。 サーバーがHTTPSをサポートしている場合は、クリアテキストHTTP通信をHTTPS通信にアップグレードすることをおすすめします。これにより、データが暗号化され、セキュリティが向上します。

  3. ネットワーキングライブラリでHTTPSを使用する。 もしアプリがネットワーキングライブラリ(例: OkHttp, Volley)を使用している場合は、HTTPSをサポートするように設定する必要があります。ライブラリのドキュメントを参照し、HTTPS通信の設定方法について確認してください。

以下は、OkHttpライブラリを使用してHTTPS通信を行う例です。

OkHttpClient client = new OkHttpClient.Builder()
    .build();
Request request = new Request.Builder()
    .url("https://example.com/api/data")
    .build();
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) throws IOException {
        // レスポンスの処理
    }
    @Override
    public void onFailure(Call call, IOException e) {
        // エラーハンドリング
    }
});