2010-05-27 111 views
19

我有兩個servlet:第一個servlet與客戶端類似,並創建一個HttpURLConnection來調用第二個servlet。發送錯誤消息爲JSON對象

我想送一個特殊的錯誤,格式類似於JSON對象,所以我呼籲sendError方法是這樣的:

response.sendError(code, "{json-object}") 

但在第一個servlet,當我讀到有getResponseMessage方法的錯誤,我只是得到標準HTTP消息,而不是我的JSON對象作爲一個字符串。

我怎樣才能得到我的json字符串?

回答

38

HttpServletResponse#sendError() javadoc

的服務器默認創建響應看起來像包含指定消息的HTML格式的服務器錯誤頁面,設置內容類型爲「text/HTML」,剩下的餅乾和其他標題未修改。如果已經爲與傳入的狀態代碼相對應的Web應用程序提供了錯誤頁面聲明,則會優先返回建議的msg參數。

所以使用這種方法,除了自己從HTML響應中提取消息之外,沒有別的選擇。 JSoup可能是useful在這。

爲了達到您的要求,您需要設置錯誤代碼並自行編寫響應,例如,

response.setStatus(code); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(json); 

而不是code你可以順便也用HttpServletResponse.SC_XXX constants本之一。

+0

非常感謝。 我對此有疑問,我發佈了這個問題,你的建議只是獲取json字符串的方法,而無需在html代碼中找到它。 – pAkY88 2010-05-27 21:59:29

+0

不客氣。我看到你是新來的。不要忘記標記接受的答案。另請參閱[此鏈接](http://stackoverflow.com/faq)如何Stackoverflow工作:) – BalusC 2010-05-27 22:13:52