2010-10-22 2 views
2

Я пытаюсь создать какой-то веб-сервис в приложениях Google.Google App Engine (Java): URL Fetch Response слишком большие проблемы

Теперь проблема заключается в том, что мне нужно получить данные с веб-сайта (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 дает мне follwing исключение на 3-й линии:

com.google.appengine.api.urlfetch.ResponseTooLargeException 

Это потому, что максимальный предел запроса на 1Мб и общего HTML со страницы около 1.5mb.

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

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

ответ

2

Решил проблему, используя api.

И установка опции 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); 
+1

согласно документации: URL Fetch службы ограничивает размер данных для исходящего запроса, а также для входящего ответа. При использовании java.net API данные, превышающие лимит, молча усекаются. Низкоуровневый API-интерфейс URL-адресов позволяет указать, будет ли усечение беззвучно, или превышение лимита исключает исключение –

Смежные вопросы