Netty 5发送JSON POST请求

时间:2015-04-07 20:10:39

标签: json http post netty

我尝试使用Netty 5.0.0.Alpha2通过HTTPS将POST内容作为POST请求发送到远程端点。我的问题是,新的API似乎没有提供一种简单地将JSON内容设置为请求体的方法,而不使用HttpPostRequestEncoder对象并指定JSON属性的名称。是否可以匿名设置内容"如果是,如何设置?

1 个答案:

答案 0 :(得分:1)

我能够通过使用具体的DefaultFullHttpRequest句柄而不是HttpRequest接口成功地发出请求。代码现在看起来有点像这样(为简洁而编辑):

DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/path/to/x");
request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
request.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP + "," + HttpHeaderValues.DEFLATE);
request.headers().set(HttpHeaderNames.CONTENT_TYPE, "application/json");
request.headers().set(HttpHeaderNames.ACCEPT, "application/json");
request.headers().set(HttpHeaderNames.HOST, "somehost.com:443");
ByteBuf buffer = request.content().clear();
int p0 = buffer.writerIndex();
buffer.writeBytes(json.getBytes());
int p1 = buffer.writerIndex();
request.headers().set(HttpHeaderNames.CONTENT_LENGTH, Integer.toString(p1 - p0));

我确信这可能更漂亮(特别是内容长度计算),但它似乎可以工作并且可以节省任何在这个问题上浪费任何脑循环的人。

谢谢你碰巧考虑它。