Google App Engine (Java): extracción de URL de respuesta demasiado grandes problemas
-
10-10-2019 - |
Pregunta
Estoy tratando de construir algún tipo de servicio web en aplicaciones de Google.
Ahora el problema es que necesito para obtener datos de una página web (HTML raspado).
La solicitud será similar a:
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;
Ahora App Engine me da la excepción follwing en la línea de 3o:
com.google.appengine.api.urlfetch.ResponseTooLargeException
Esto es debido a que el límite de solicitudes máximo es 1 MB y en el código HTML total a partir de la página se trata de 1,5 MB.
Ahora mi pregunta: Necesito solamente las primeras 20 líneas del HTML para raspar. ¿Hay una manera de obtener sólo una parte del HTML, de modo que no será lanzado el ResponseTooLargeException?
Gracias de antemano!
Solución
Resuelto el problema mediante el uso de la API de bajo nivel URLFetch.
Y establecer la opción allowTruncate true;
Básicamente funciona así:
HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);