2011-12-14 31 views
0

即時通訊編寫一個Java應用程序,發送一個發佈請求到服務器,並期望從服務器的JSON。現在,當我需要從服務器獲得響應時,我只需要從httpStream的HTTP代碼爲200(HTTP確定)或者是否有其他情況下從inputStream獲取它? ,例如:服務器是否僅在其HTTP 200發送響應?

//... 
if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
// only here try to get the response 
} 
//... 

回答

3

這取決於如何實現服務器。檢查API,如果服務器有一個。如果它是內部的,請問你的服務器人。

一般來說,如果你的響應代碼是2XX或3XX,我會檢查反正響應...

+2

201,202,203,204經常用於各種種類的REST的API調用......同樣,401,402,或403可能會從一些API的認證失敗... 坦率地說回來,我會嘗試解析任何返回的東西,即使*像JSON一樣聞到*,在這種情況下。 – BRFennPocock 2011-12-14 22:59:37

+0

@BRPocock +1,我同意。解析返回的所有內容。如果這是一個錯誤或什麼的,記錄它。如果是JSON,請解析它。如果什麼都沒有回來,那麼你只是失去了納秒檢查。 – 2011-12-14 23:05:42

0

,需要考慮三件事情:

  1. 所有2XX代碼表示的一些成功分類。但根據確切的代碼,您的閱讀代碼可能會有所不同。 (例如,204表示成功,但沒有內容。)
  2. 有重定向代碼(3xx)。這些通常會自動跟隨http客戶端庫,但您也可以將它們設置爲不使用,在這種情況下,您需要具有處理這些情況的自定義代碼。
  3. 即使您得到表示錯誤的代碼,也可能會在流中返回有價值的信息。你是否想要處理它取決於你的確切需求。
2

如果您與之通信的服務器遵循規範,則200或201響應可以包含實體。 204響應成功,但響應中沒有數據。

請參閱此處的第9.5節:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5瞭解POST的可接受響應的詳細信息。下面摘錄:

通過POST方法執行的操作可能不會導致可由URI標識的資源 。在這種情況下,200(OK)或204 (無內容)是合適的響應狀態,具體取決於 是否包含描述結果的實體。

如果資源已經在源服務器上創建的,則響應 應該是201(創建)和包含其描述請求的 狀態,指的是新的資源的實體,和一個位置 報頭(見第14.30節)。

相關問題