Google App Engine(Java):URLフェッチの応答が大きすぎる問題
-
10-10-2019 - |
質問
Googleアプリにある種のWebサービスを作成しようとしています。
問題は、Webサイトからデータを取得する必要があることです(HTMLスクレイピング)。
リクエストは次のように見えます:
URL url = new URL(p_url);
con = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(con.getInputStream());
BufferedReader reader = new BufferedReader(in);
String result = "";
String line = "";
while((line = reader.readLine()) != null)
{
System.out.println(line);
}
return result;
これで、App Engineは3行目で次の例外を提供してくれます。
com.google.appengine.api.urlfetch.ResponseTooLargeException
これは、最大要求制限が1MBで、ページからの合計HTMLが約1.5MBであるためです。
さて、私の質問:私は削るためにHTMLの最初の20行だけが必要です。 ResponsetOulargeExceptionがスローされないように、HTMLの一部のみを取得する方法はありますか?
前もって感謝します!
解決
低レベルのurlfetch APIを使用して問題を解決しました。
AllowTruncateオプションをtrueに設定します。
基本的には次のように機能します:
HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
所属していません StackOverflow