2012-03-25 20 views
7

Estoy usando Jsoup para publicar un formulario en un sitio web, la respuesta es texto sin formato, pero Jsoup no conoce el tipo de contenido. Por lo tanto, uso ignoreContentType (true), por lo que Jsoup no lanzará una excepción debido al tipo de contenido desconocido. Sin embargo, no puedo entender cómo obtener la respuesta sin procesar de Jsoup, el texto contiene algunos caracteres especiales, Jsoup se quita, también Jsoups agrega un cuerpo y una etiqueta html. No lo necesito, solo quiero la respuesta sin formato. ¿Cómo obtener la respuesta sin procesar? ¡Gracias!Obtener respuesta de correo sin procesar desde Jsoup

Respuesta

5

Puede usar Response#body() para esto. P.ej.

String body = Jsoup.connect(url).execute().body(); 

O, si está haciendo la POST

String body = Jsoup.connect(url).method(Method.POST).data(data).execute().body(); 
+0

Gracias, eso haría el trabajo, sin embargo, me pregunto si realmente no es posible obtener los datos sin procesar de Jsoup. Soy consciente de que es un analizador sintáctico, pero tal vez todavía hay un método para ello. ;-) –

+0

Cambié la respuesta. – BalusC

+0

Gracias, pero todavía no son los datos brutos, además de las etiquetas corporales agregadas (no es el problema real) algunos caracteres especiales faltan/eliminados por jsoup): –

0

Usted puede obtener el objeto de ResponseConnection, y contiene el byte de datos en bruto. Ignore el tipo de contenido o fallará en los datos que no sean de texto. Si usa body(), puede destruir la respuesta utilizando el juego de caracteres predeterminado.

Connection conn = Jsoup.connect(url).ignoreContentType(true).method(Method.GET); 
Connection.Response response = conn.execute(); 
byte[] raw = response.bodyAsBytes(); 

// if you want... 
Document parsed = response.parse(); 
1

tuve mismo problema y resolverlo en dos pasos

1- respuesta recolección

2- respuesta de lectura como bytes y convirtiendo a la cadena o analizar a cualquier cosa que desee (JSON, etc.)

Response resp = jsoup.connect(url).ignoreContentType(true).Method(Method.Post).execute(); 
String respStr = new String(resp.bodyAsBytes(), StandardCharsets.UTF_8); 
Cuestiones relacionadas