使用Netty通过Post发送Json格式数据

该内容展示了两种方式构造和发送HTTP请求的方法。第一种方式详细地创建了一个POST请求,设置了各种HTTP头信息,包括主机、连接类型、接受编码、内容类型和内容长度。第二种方式则提供了通用的创建GET和POST请求的函数,同样关注了HTTP头的设置。这些方法对于理解HTTP请求的构建过程非常有帮助。
摘要由CSDN通过智能技术生成
  • 方式1
// Prepare the HTTP request.
String host = uri.getHost() == null ? "127.0.0.1" : uri.getHost();
FullHttpRequest request = new DefaultFullHttpRequest(
            HttpVersion.HTTP_1_1, HttpMethod.POST, uri.getRawPath());

request.headers().set(HttpHeaderNames.HOST, host);
request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); // or HttpHeaders.Values.CLOSE
request.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaders.Values.GZIP);
request.headers().add(HttpHeaderNames.CONTENT_TYPE, "application/json");
ByteBuf bbuf = Unpooled.copiedBuffer("{\"jsonrpc\":\"2.0\",\"method\":\"calc.add\",\"params\":[1,2],\"id\":1}", StandardCharsets.UTF_8);
request.headers().set(HttpHeaderNames.CONTENT_LENGTH, bbuf.readableBytes());
request.content().clear().writeBytes(bbuf);

// Send the HTTP request.
channel.writeAndFlush(request);
  • 方式2
 private DefaultFullHttpRequest createReq(final URI uri, final CharSequence body) throws Exception {
        DefaultFullHttpRequest request;
        if (body == null) {
            request = new DefaultFullHttpRequest(
                    HttpVersion.HTTP_1_1, HttpMethod.GET, uri.getRawPath());
        } else {
            request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, uri.getRawPath());
            request.headers().set(HttpHeaderNames.CONTENT_TYPE,"application/json");
            request.content().writeBytes(body.toString().getBytes(CharsetUtil.UTF_8.name()));
            request.headers().set(HttpHeaderNames.CONTENT_LENGTH,request.content().readableBytes());
        }
        request.setUri(uri.toString());
        request.headers().set(HttpHeaderNames.HOST, uri.getHost());
        request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
        return request;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值