0

基于 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);

好的。现在我还想向我的客户发送二进制数据(例如图像)。由于我没有找到有关如何实现此目的的在线示例,因此我有两个问题:

  1. 我如何需要修改通道管道才能将文本和二进制数据发送给我的客户?
  2. 如何修改HttpServerHandler类以便向客户端发送二进制文件?
4

1 回答 1

0

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

如果要将 png 文件发送到浏览器,请将 content-type 设置为“image/png”。

于 2013-06-22T13:19:13.970 回答