2012-02-16 1 views
0

У меня есть некоторые проблемы во время написания Netty http-сервера, который отправляет/принимает данные, И я был бы очень признателен за любую помощь или объяснение.Netty - Http, веб-браузер, веб-страница ничего не показывала

Мой клиент (HTML код), как это:

>

 $.ajax({ 
      type : "POST", 
      url : "http://localhost:9999/MyTest/", 
      data : {"servicename":"aptest","querymsg":{"wsid":"111" ,"telid":"1111","role":"1"}}, 
      dataType:"json", 
      timeout:100000, 
      beforeSend: function(xhr) { //add header data 
       }, 
      success: function(rs) { 
       alert("[success]" + rs); 
      }, 
      complete:function(XMLHttpRequest,textStatus){ 
       if(XMLHttpRequest.readyState=="4"){ 
        alert(XMLHttpRequest.responseText); 
       } 
       }, 
    error: function(XMLHttpRequest,textStatus,errorThrown){ 
       alert("error:"+textStatus); 
      }  

     }); 

сервера код сторона:

ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(
      Executors.newCachedThreadPool(), 
      Executors.newCachedThreadPool()) 
      ); 


    HttpServerPipelineFactory pipeline = new HttpServerPipelineFactory(); 
    bootstrap.setPipelineFactory(pipeline); 
    serverChannel = bootstrap.bind(new InetSocketAddress(Port)); 

HttpRequestServerHandler:

Blockquote

HttpResponse res = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.OK); 
    res.setContent(
      ChannelBuffers.copiedBuffer(
        "Test", CharsetUtil.UTF_8)); 
    setContentLength(res, res.getContent().readableBytes());   
    res.setChunked(true); 
    res.setHeader(HttpHeaders.Names.CONTENT_TYPE, "text/html; charset=UTF-8"); 


    // Send the response and close the connection if necessary. 
    ChannelFuture f = ctx.getChannel().write(res); 
+0

Что такое ошибка? – Veebs

+0

никаких ошибок, но в браузере, показать предупреждение, что содержание [успех] null – user1213496

ответ

0

Проблема заключается в том, что вы установили HttpRequest быть фрагментированными. При этом его содержимое становится empy. Об этом говорится и в javadocs, см. [1].

Если вы действительно хотите использовать фрагментированный ответ, вам нужно сначала написать HttpResponse, который помечен как chunked, а затем записать его содержимое через HttpChunk. См. [2].

[1] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/http/HttpMessage.html

[2] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/http/HttpChunk.html