2012-03-25 9 views
7

Ich benutze Jsoup, um ein Formular an eine Website zu posten, die Antwort ist Klartext, aber der Inhaltstyp ist Jsoup nicht bekannt. Daher verwende ich ignoreContentType (true), daher wird Jsoup aufgrund des unbekannten Inhaltstyps keine Ausnahme auslösen. Allerdings kann ich nicht herausfinden, wie man die rohe Antwort von Jsoup bekommt, der Text enthält einige Sonderzeichen, die Jsoup entkleidet, auch Jsoups fügt ein Body- und HTML-Tag hinzu - ich brauche das nicht, ich will nur die rohe Antwort. Wie bekomme ich die rohe Antwort? Vielen Dank!Erhalten Sie rohe Antwort von Jsoup

Antwort

5

Sie könnten hierfür Response#body() verwenden. Z.B.

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

Oder wenn Sie POST tun sind

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

Danke, das würde den Job machen, aber ich frage mich, ob es wirklich nicht möglich ist, die Rohdaten von Jsoup zu bekommen. Ich bin mir bewusst, dass es ein Parser ist, aber vielleicht gibt es noch eine Methode dafür? ;-) –

+0

Ich habe die Antwort geändert. – BalusC

+0

Danke, aber das sind immer noch nicht die Rohdaten, abgesehen von den hinzugefügten body-Tags (nicht das eigentliche Problem) fehlen einige Sonderzeichen von jsoup: –

0

Sie können die Response Objekt aus Connection zu bekommen, und es enthält die Roh-Byte-Daten. Ignoriere den Inhaltstyp oder es schlägt bei Nicht-Text-Daten fehl. Wenn Sie body() verwenden, kann die Antwort mit dem Standardzeichensatz fehlerhaft sein.

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

Ich hatte dasselbe Problem und lösen es in zwei Schritten

1- Versammlung Antwort

2- Lese Antwort als Bytes und bespannen Umwandlung oder Parsen an, was Sie wollen (json, etc)

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