我正在尝试在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;

http://code.google.com/intl/nl-nl/appengine/docs/java/javadoc/com/google/google/appengine/api/urlfetch/urlfetch/fetchoptions.html

基本上它是这样的工作:

HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top