如何在Java中从自定义netty HTTP服务器发送文本和二进制数据?

如何在Java中从自定义netty HTTP服务器发送文本和二进制数据?,java,http,netty,Java,Http,Netty,基于Netty3.6,我在Java桌面应用程序中实现了一个小型HTTP服务器。现在我已经成功地创建了基本的HTTP服务器布局,我可以将各种基于文本的文件发送到基于浏览器的客户端 在我的netty服务器管道工厂中,我创建了新的通道管道,如下所示: pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast("aggregator", new HttpChunkAggregator(1048576)); pipeli

基于Netty3.6,我在Java桌面应用程序中实现了一个小型HTTP服务器。现在我已经成功地创建了基本的HTTP服务器布局,我可以将各种基于文本的文件发送到基于浏览器的客户端

在我的netty服务器管道工厂中,我创建了新的通道管道,如下所示:

pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new HttpServerHandler());
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
response.setHeader(CONTENT_TYPE, contentType + "; charset=UTF-8");
response.setHeader(PRAGMA, "no-cache");
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));

if(keepAlive)
{
    response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes());
    response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
}

ChannelFuture future = e.getChannel().write(response);
在我的
HttpServerHandler
类中,我向客户端发送文本数据,如下所示:

pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new HttpServerHandler());
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
response.setHeader(CONTENT_TYPE, contentType + "; charset=UTF-8");
response.setHeader(PRAGMA, "no-cache");
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));

if(keepAlive)
{
    response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes());
    response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
}

ChannelFuture future = e.getChannel().write(response);
好。现在,我还想向我的客户发送二进制数据(例如图像)。由于我在网上没有找到如何实现这一点的例子,我有两个问题:

  • 我需要如何修改通道管道才能将文本和二进制数据同时发送到我的客户机
  • 如何修改HttpServerHandler类,以便向客户端发送二进制文件

  • 我认为上下文和二进制之间没有任何区别。我认为您需要做的是设置正确的内容类型。然后浏览器知道如何处理它

    如果要将png文件发送到浏览器,请将内容类型设置为“image/png”