服务器是否仅在其HTTP 200时发送响应?

时间:2011-12-14 22:50:38

标签: java http

我正在编写一个java应用程序,它将一个post请求发送到服务器并期望来自服务器的json。现在,当我需要从服务器获取响应时,我只需要在http代码为200(HTTP OK)时从inputStream获取它,还是有其他任何情况? ,例如:

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

3 个答案:

答案 0 :(得分:3)

这取决于服务器的实现方式。如果服务器有API,请检查API。如果它是内部的,请询问您的服务器人员。

一般来说,如果您的回复代码是2xx或3xx,我会检查回复......

答案 1 :(得分:2)

如果您与之通信的服务器遵循规范,则200或201响应有效包含实体。 204响应成功但响应中没有数据。

有关可接受的POST响应的详细信息,请参见此处的第9.5节:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5。摘录如下:

  

POST方法执行的操作可能不会产生资源   可以通过URI识别。在这种情况下,200(OK)或204   (No Content)是适当的响应状态,具体取决于是否   或不响应包括描述结果的实体。

     

如果已在源服务器上创建资源,则为响应   应该是201(创建)并包含一个描述该实体的实体   请求的状态,并引用新资源和位置   标题(见第14.30节)。

答案 2 :(得分:0)

有三件事需要考虑:

  1. 所有2xx代码都表示某种成功。但根据确切的代码,您的阅读代码可能会有所不同。 (例如,204表示成功,但没有内容。)
  2. 有重定向代码(3xx)。这些通常由http客户端库自动跟随,但您也可以不设置它们,在这种情况下,您需要具有处理这些情况的自定义代码。
  3. 即使您收到表示错误的代码,也可能会在流中返回有价值的信息。是否要处理它取决于您的确切需求。