2012-03-25 14 views
7

私はJsoupを使用してWebサイトにフォームを投稿していますが、返信はプレーンテキストですが、コンテンツタイプはJsoupに知られていません。したがって、ignoreContentType(true)を使用するため、Jsoupは未知のコンテンツタイプのため例外をスローしません。しかし、私はJsoupから生の返信を得る方法を考え出すことができません。テキストには特殊文字が含まれています.Jsoupは本体とhtmlタグを追加します。私はそれを必要としません。生の返信を受け取るには?ありがとう!Jsoupから生の返信を取得

答えて

5

これにはResponse#body()を使用できます。例えば。

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

それとも、POST

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

本当にありがとうございました。しかし、実際にJsoupから生データを取得することが本当に不可能かどうかは疑問です。私はそれがパーサーであることを認識していますが、おそらくそれのための方法がまだありますか? ;-) –

+0

私は答えを変更しました。 – BalusC

+0

ありがとうございますが、これは未加工のデータではありません。実際の問題ではなく、追加されたボディタグの外にいくつかの特殊文字が欠落/削除されています。 –

0

をやっている場合は、ConnectionからResponseオブジェクトを取得することができ、そしてそれは、生のバイトのデータが含まれています。コンテンツタイプを無視するか、テキスト以外のデータで失敗します。 body()を使用すると、デフォルトの文字セットを使用して応答をマングリングする可能性があります。

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

私は同じ問題を持っていたし、2つの段階

バイトとして

の1-収集応答

2 - 読み取り応答でそれを解決し、あなたが欲しいもの(JSONなど)を文字列に変換したり解析します

Response resp = jsoup.connect(url).ignoreContentType(true).Method(Method.Post).execute(); 
String respStr = new String(resp.bodyAsBytes(), StandardCharsets.UTF_8); 
関連する問題