Google App Engine (Java): слишком большая проблема с откликом URL Fetch Response - PullRequest
2 голосов
/ 22 октября 2010

Я пытаюсь создать своего рода веб-сервис в приложениях Google.

Теперь проблема в том, что мне нужно получить данные с веб-сайта (HTML Scraping).

Запрос выглядит так:

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

Это связано с тем, что максимальный лимит запросов составляет 1 МБ, а общий HTML-код страницы - около 1,5 МБ.

Теперь мой вопрос: Мне нужно только первые 20 строк HTML, чтобы очистить. Есть ли способ получить только часть HTML-кода, чтобы исключение ResponseTooLargeException не создавалось?

Заранее спасибо!

1 Ответ

2 голосов
/ 22 октября 2010

Решил проблему, используя API-интерфейс URLFetch низкого уровня.

И установив для параметра allowtruncate значение true;

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

В основном это работает так:

HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
...