HTTP通信のレスポンスを読む以下のコードですが
readで応答が帰ってこなくなってしまいます。
デバッガで確認したところどうやらsocketRead0で処理が止まっているみたいなのですが、、
何が原因なのでしょうか?
java
1StringBuilder response = new StringBuilder(); 2InputStream in = socket.getInputStream(); 3while (true) { 4 int c = 0; 5 try { 6 c = in.read(); 7 } catch (IOException e) { 8 break; 9 } 10 if (c == -1) { 11 break; 12 } 13 response.append((char)c); 14}
ネットで「socketRead0」を検索すると、接続先の問題が大きそうですね。なので、ソースコードを見ても問題解決の糸口はつかめないかと。。。原因解明には、地道に接続先の状態を調べていくほかなさそうです。wgetかcurlで、接続先のレスポンスを得ることはできますか?
アプリケーションレベルのプロトコルとしてレスポンス受信後に回線が切断されることになっているのでしょうか。
送受信を何度か行う為にレスポンス受信後もソケット(入出力ストリーム)は維持しなければならない構造であったら、ご提示のコードではダメと云うことになりますが。
> readで応答が帰ってこなくなってしまいます。
状況が詳しく述べられていないので分かりませんが. 適切なHTTPレスポンスはすでに受信済みなのでは? HTTPリクエストをクライアントから送信したのち、一定のHTTPレスポンスを受信してその後続いて応答が返ってこないのであれば、クライアントが切断しない場合はたいていのサーバーであれば数分程度でタイムアウトしてサーバー側から切断してきます。
回答1件
あなたの回答
tips
プレビュー