3

ファイルをダウンロードして保存する必要があります。HTTPBuilderシンプルなAPIとCookieをサポートしているので使おうとしています。私は次のコードを書きました:

//create new httpBuilder and set cookies
def httpBuilder = ...
def file = ...  
def inputStream = httpBuilder.get(uri: urlData.url, contentType: ContentType.BINARY)
FileUtils.copyInputStreamToFile(inputStream)
  1. ファイルが(ファイルの一部だけでなく)正しくダウンロードされていることを確認するにはどうすればよいですか?
  2. 大きなファイルの場合、オンラインで例外java.lang.OutOfMemoryError: Java heap spaceが発生しますdef inputStream = httpBuilder.get...。どうすれば解決できますか?
  3. でファイルをダウンロードするのは最善の選択ではないかもしれませんHTTPBuilderCookieをサポートするファイルをダウンロードする最良の方法は何ですか?
4

1 に答える 1

4

カスタム応答処理ロジックを使用してHttpBuilderGETリクエストを試しましたか?

httpBuilder.get(uri: urlData.url, contentType: ContentType.BINARY) { 
   resp, inputStream ->
       FileUtils.copyInputStreamToFile(inputStream)
}

HttpBuilderに奇妙な問題がある場合は、完全なCookieをサポートする実証済みのApacheHttpClientAPIをいつでも使用できます

HttpGet req = new HttpGet(url);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(req);
// validate response code, etc.
InputStream inputStream = response.getEntity().getContent();

Cookieを管理するリクエストを実行するときに、localContextを追加できます。

于 2012-12-09T23:59:44.807 に答える