8

私は HttpURLConnection クラスを使用して http リクエストを作成しています。私のコードは次のようになります-

while(true){
    try{
         connection=(HttpURLConnection)url.openConnection();
         connection.setDoOutput(true);
         connection.setConnectTimeout(2*1000);
         InputStream in=connection.getInputStream();
    }
    catch(SocketTimeOutException e){}
    catch(IOException e){}
}

InputStream オブジェクトを取得したら、データに対して何らかの処理を行います。私の問題は、プログラムを十分に長く実行すると、getInputStream の呼び出しがブロックされ、それを乗り越えることができないことです。

何か不足していますか?ポインタやヘルプをいただければ幸いです。ありがとう。

4

2 に答える 2

7

接続の読み取りタイムアウトを設定します。また、ストリームを使い終わったら、finally ブロックでストリームを閉じます。

于 2012-05-22T15:44:12.493 に答える
1

使用されていない接続を閉じる必要があります。次に例を示します。

connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setReadTimeout(2*1000);
connection.connect();
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
 stringBuilder.append(line + "\n");
}
String result = stringBuilder.toString();
reader.close();
于 2012-05-22T15:42:34.483 に答える