响应可能因使用netty

时间:2015-08-05 12:53:24

标签: java json netty content-length

我为我的应用程序创建了一个小型HttpServer。它用于提供某种API和一些json repsponses。到目前为止我测试的所有响应都很好,除了一个。我使用GSON作为json部分。我处理响应创建的部分代码如下:

JsonObject jsonResult = new JsonObject();
JsonArray jsonResultItem = new JsonArray();
for (Entry<Integer, TestcaseStatusReport> item : testcaseStatuses.entrySet()){
    JsonObject tempJson = new JsonObject();
    tempJson.addProperty("id", item.getKey());
    tempJson.addProperty("status", item.getValue().getStatus().toString());
    jsonResultItem.add(tempJson);

}

jsonResult.add("result", jsonResultItem);
return jsonResult;

然后使用此jsonResult

创建响应
private static FullHttpResponse createResponse(JsonObject jsonResponse) {
    ByteBuf buffer = Unpooled.copiedBuffer(jsonResponse.toString(),
            CharsetUtil.UTF_8);
    FullHttpResponse response = new DefaultFullHttpResponse(
                                                            HttpVersion.HTTP_1_1,
                                                            HttpResponseStatus.OK,
                                                            buffer);
    HttpHeaders.setContentLength(response, buffer.readableBytes());
    response.headers().set(HttpHeaders.Names.CONTENT_TYPE,
            "application/json");

    return response;
}

我从上面传递jsonResult对象作为参数。在调试模式下,我看到创建的json是以下

{"result":[{"id":2,"status":"Starting"}]}

并且回复内容长度为41,同意。但它仍然挂起。我为其他api调用使用相同的函数(createResponse)并传递其他jsonResponse参数并且工作正常。我做错了吗?

0 个答案:

没有答案