前提・実現したいこと
AndroidアプリとLinuxアプリの2つで共用する、HTTP通信処理のライブラリを作成しています。
使用IDEはEclipseで、標準のJava(OracleのJDK)を使用して作成しています。
また、HTTPS通信についても今後ライブラリに盛り込む予定です。
発生している問題・エラーメッセージ
上記のHTTP通信ライブラリを、Androidアプリとコンソールアプリ(同じくEclipseで作成)に取り込んで動作させたところ、サーバからのレスポンスデータ取得処理で結果に差異が生じてしまいました。
コンソールアプリ→レスポンスデータを取得できた
Androidアプリ→レスポンスデータを取得できなかった
サーバ側のアクセスログを確認したところ、どちらのアプリからの応答も200(OK)とレスポンスデータの正しいサイズが記録されていました。
該当のソースコード
Java
1HttpURLConnection connection = (HttpURLConnection) new URL(接続先URL).openConnection(); 2connection.setRequestMethod("POST"); 3// リクエストデータ設定は割愛 4connection.connect(); 5 6 7BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 8StringBuilder builder = new StringBuilder(); 9while (reader.ready()) { 10 builder.append(reader.readLine()); 11} 12String responseData = builder.toString(); 13// ↑コンソールアプリではここで正しいレスポンスデータが格納されるが 14// Androidアプリでは空文字がセットされてしまっている 15 16reader.close(); 17// catch処理は割愛 18connection.disconnect();
試したこと
以下を試してみましたが、いずれも効果はありませんでした。
- RequestMethodをGETに変更
- レスポンス取得のタイムアウト値を設定(5秒程度)
- InputStreamReader生成時に文字コード指定を追加(UTF-8)
- StringBuilderを使うところをStringBufferに変更
補足情報(FW/ツールのバージョンなど)
各バージョン
Javaライブラリ:JDK 8
Androidアプリ:Android 7.0 (Android Studio 3.2)
Linuxアプリ:すみません、バージョン失念しました…
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。