2011-08-24 65 views
3

我張貼一些數據與一個簡單的ID(這裏1692945)回覆IIS服務器:IIS響應與內容類型:文本拋出一個「未處理的內容類型‘空’,」例外Jsoup

Cache-Control: private 
Content-Type: text; charset=utf-8 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 
Date: Tue, 23 Aug 2011 17:08:37 GMT 
Content-Length: 7 

1692945 

text內容類型似乎混淆Jsoup其拋出:

Exception in thread "main" java.io.IOException: Unhandled content type "null" on URL http://domain.com/svr_listing.aspx. Must be text/*, application/xml, or application/xhtml+xml 

是否有指定的響應必須trated爲text/plain的方法嗎?這是一個jsoup錯誤?

謝謝,

尼古拉斯

+0

我不認爲它是一個有效的內容類型。我一直認爲他們*具有*類型和子類型,用'/'分隔。 –

+0

是的,我認爲這個問題是由於IIS發送錯誤的內容類型。所以我的問題是要知道是否可以指定jsoup以text/plain的形式明確地解釋響應。 –

+1

將其報告給相關網站的服務器管理員。 – BalusC

回答

3

jsoup默認檢查響應類型,以防止您意外嘗試將圖像和PDF等解析爲HTML。由於它不會將text識別爲有效的HTML內容類型,因此會引發異常。

您可以強制jsoup忽略內容類型並使用Connection.ignoreContentType()方法將響應解析爲HTML。

E.g.

Document doc = Jsoup.connect(url).ignoreContentType(true).get(); // or .post(); 
+0

太棒了!可惜我沒有自己選擇這個選項!謝謝! :) –

0

Jsoup可以從字符串對象中讀取數據。爲什麼不使用InputStreamReader將服務器響應讀入字符串,然後讓JSoup解析響應?

+0

因爲我使用Scala,我認爲http://dispatch.databinder.net會非常適合爲任務。 –

+0

從來沒有聽說過dispatcher.databinder.net,看起來像一個偉大的圖書館! –

+0

我仍然是斯卡拉n00b,但它似乎比jsoup更自然 –

相關問題