2012-02-29 11 views
1

URL接続を使用してインターネットでストリームをダウンロードします。しかし、私はモデムをリセットした後、私はこのストリームをダウンロードし続けることができませんcazエラー:接続リセット。どのように私はそれを解決する? は、ここに私のコードです:URL接続をリセットする方法

URL url = new URL(_URL); 
HttpURLConnection hUC = (HttpURLConnection) url.openConnection(); 
hUC.connect(); 
while (true) { 
    if ((_data.num = is.read(_data.b)) == -1) { 
        break; 
       } 

       //write to file 
       fos.write(_data.b, 0, _data.num); 
} 

答えて

1

あなたがすることはできません - 少なくとも、どのように期待することができるではありません。

代わりに、例外を処理し、既に読み取ったデータの量を判断する必要があります。ダウンロードしているHTTPサーバーが要求可能なバイト範囲をサポートしていると仮定して、インターネット接続が再確立されたら、要求にカスタムHTTPヘッダーを設定し、残りの部分を再ダウンロードできます。 (これには新しいHttpURLConnectionが必要です)

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35には、この作業に必要なHTTP仕様が表示されます。

0

「レジューム」タイプの機能をお探しの場合、これはもう少し複雑です。

インターネットが切断された後にインターネットに戻ったらリクエストを再発行し、リクエストにヘッダーを追加して、途中で終了したバイト番号でダウンロードを再開する必要があります。 再開までの距離を指定するには、リクエストヘッダーでRangeプロパティを設定する必要があります。それから、そこから "fos"オブジェクトへの書き込みを続けます。

このURLをチェックアウト:Java: resume Download in URLConnection

関連する問題