http响应标头信息

时间:2016-03-29 09:36:08

标签: java json http

所以对某些人来说这可能是一个愚蠢的问题,如果不是全部,但我有这个回应标题:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Atr: 10
X-Atr2: 1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 29 Mar 2016 09:17:26 GMT

以及随之而来的结果:

{"site": [
  {
  "id": "1",
  "name": "James"
  },
   {
  "id": "2",
  "name": "Katia"
  },
  {
  "id": "3",
  "name": "Sam"
  }

我想要做的是更改 HTTP / 1.1 200确定以防万一我得到类似 HTTP / 1.1 206你有一些结果的内容同时显示JSON结果。如果我们没有任何结果,那就像: HTTP / 1.1 400没有找到任何结果并且JSON结果如下:

[]

所以我试过的是以下内容:

if (response.getSite().size() <= 0) {
     responseHttp.sendError(HttpServletResponse.SC_ACCEPTED, "you have some    results"); 
    } else {

 responseHttp.sendError(HttpServletResponse.SC_ACCEPTED, "you have some    results");}

在两种情况下,它都编辑了HTTP / 1.1,但是没有显示任何消息,也没有显示JSON结果。

希望我能很好地解释我的问题,感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:1)

您只需相应地设置状态代码和消息。你确实为这两种情况设置了SC_ACCEPTED。

顺便说一下。 SC_ACCEPTED是202。 对于&#34;没有找到任何结果&#34;你可以SC_NOT_FOUND(404); 或者你可以使用ints

您可以找到SC_...here

如果要发送消息和json,可能需要将json字符串嵌入到消息中。否则,您可能只需要在正文中发送json并将消息移动到标头中的HTTP状态描述。方法sendError(int sc, String msg)会创建一个类似HTML的页面,其中嵌入了您的消息(请参阅here)。

答案 1 :(得分:0)

我认为你的意思是你想要设置响应状态所以我建议使用类似的东西:

if (response.getSite().size() <= 0) {
     responseHttp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Bad Request"); 
    } else {
     responseHttp.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
     //your other codes for sending JSON response goes here:
  }