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!

¿Fue útil?

Solución

Resuelto el problema mediante el uso de la API de bajo nivel URLFetch.

Y establecer la opción allowTruncate true;

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

Básicamente funciona así:

HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top