基于netty 3.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());
在我的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
类以便将二进制文件发送到客户端?答案 0 :(得分:0)
我认为上下文或二进制文件之间不存在任何差异。我认为你需要做的是正确设置内容类型。然后浏览器知道如何处理它。
如果要将png文件发送到浏览器,请将content-type设置为“image / png”。