Google App Engine(Java):URL提取响应太大问题
-
10-10-2019 - |
题
我正在尝试在Google应用程序上构建某种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在第三行给我提供了Follwing例外:
com.google.appengine.api.urlfetch.ResponseTooLargeException
这是因为最大请求限制为1MB,并且页面的总HTML约为1.5MB。
现在我的问题:我只需要HTML的前20行即可刮擦。有没有办法仅获取HTML的一部分,以便不会抛出ResponseToolArgeException?
提前致谢!
解决方案
通过使用低级urlfetch API解决了问题。
并将允许截断选项设置为true;
基本上它是这样的工作:
HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
不隶属于 StackOverflow