2015-07-10 3 views
0

Я хочу отправить ответ json с помощью netty http-сервера. Я использую Gson для создания json. Мой код выглядит следующим образом, чтоJson response in netty и java

HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, 
      HttpResponseStatus.OK); 
response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, 0); 
response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "application/json"); 
JsonObject jsonResponseMessage = new JsonObject(); 
jsonResponseMessage.addProperty("result", success); 
ctx.write(jsonResponseMessage); 
response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, jsonResponseMessage.toString().length()); 
ctx.write(response); 

внутри метода channelRead0 и

ctx.flush() 

внутри метода channelReadComplete. Проблема в том, что я никогда не получаю ответ, обратно, кажется, что запрос застревает и никогда не возвращает ответ. Я считаю, что это связано с длиной контента. Нужно ли мне что-то делать?

ответ

1

Вам нужно построить FullHttpResponse или завершить HttpReponse, написав LastHttpContent.

0
FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK, Unpooled.wrappedBuffer(here_your_data_as_byte_array)); 
response .headers().set(CONTENT_TYPE, "application/json"); 
response .headers().set(CONTENT_LENGTH, response .content().readableBytes()); 
ctx.write(response); 
ctx.flush();