繁体   English   中英

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

[英]How to send text and binary data from a custom netty HTTP server in Java?

基于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类以将二进制文件发送到客户端?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM