【发布时间】:2012-04-11 12:00:31
【问题描述】:
我遇到了一个非常非常基本的问题:使用 HttpRequest 到 POST 向使用 Netty 的服务器发送少量 JSON。
通道连接后,我准备这样的请求:
HttpRequest request = new DefaultHttpRequest(
HttpVersion.HTTP_1_1, HttpMethod.POST, postPath);
request.setHeader(HttpHeaders.Names.CONTENT_TYPE, "application/json");
String json = "{\"foo\":\"bar\"}";
ChannelBuffer buffer = ChannelBuffers.copiedBuffer(json, CharsetUtil.UTF_8);
request.setContent(buffer);
channel.write(request);
System.out.println("sending on channel: " + json);
最后一行打印出{"foo":"bar"},这是格式正确的JSON。
但是,我使用 Flask 在 Python 中编写的一个非常简单的回显服务器会显示请求,但它没有 body 或 json 字段,就像无法将正文正确解析为 JSON。
当我简单地使用curl 发送相同的数据时,回显服务器会正确找到并解析 JSON:
curl --header "Content-Type: application/json" -d '{"foo":"bar"}' -X POST http://localhost:5000/post_path
我在 Netty 中的管道由以下组成:
return Channels.pipeline(
new HttpClientCodec(),
new MyUpstreamHandler(...));
MyUpstreamHandler 扩展 SimpleChannelUpstreamHandler 并且是在通道连接后尝试发送 HttpRequest 的位置。
再一次,我完全不知所措。任何帮助将不胜感激。
【问题讨论】: