2016-08-16 4 views
2

このメソッドを変更して、限られた時間だけ接続を維持できるようにするにはどうすればよいですか?私は5秒の接続後に出力ストリームを取得したい。http接続から時間制限付きストリームを作成する方法

public boolean downloadUrlToStream(String urlString, OutputStream outputStream) { 
    HttpURLConnection urlConnection = null; 
    try { 
     final URL url = new URL(urlString); 
     urlConnection = (HttpURLConnection) url.openConnection(); 
     InputStream stream = urlConnection.getInputStream(); 
     // you can use BufferedInputStream and BufferOuInputStream 
     IOUtils.copy(stream, outputStream); 
     IOUtils.closeQuietly(outputStream); 
     IOUtils.closeQuietly(stream); 
     Log.i(getTag(), "Stream closed all done"); 
     return true; 
    } catch (final IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (urlConnection != null) 
      IOUtils.close(urlConnection); 
    } 
    return false; 
} 

答えて

0

HtppURLConnectionはメソッド:setConnectTimeout(int time)を持ちます。ここで、timeはミリ秒単位のタイムアウト時間です。 urlConnection.setConnectTimeout(5000);のように設定できます。これは、タイムアウトが5秒間あることを意味します。そして、SocketTimeoutExceptionをキャッチします。

try { 
urlConnection.setConnectTimeout(5000); 
//your stuff hear 
} catch (java.net.SocketTimeoutException e) { 
//process exception 
} finally { 
     if (urlConnection != null) 
      urlConnection.disconnect(); 
    } 
+0

動作しません。 5秒間のhttp応答でない場合、接続タイムアウトが機能します。 – Roix

+0

しかし、何をしたいですか?生きているhttp接続を5秒間だけ保持し、それがダウンロードかどうかは関係ありません。か否か? –

+0

@ user3518056、おそらくメソッド 'se tReadTimeout(mili sec)'が役に立ちます。それを試してみてください。 –

関連する問題