我想使用netty发送PUT请求,但是从服务器获取超时。似乎身体没有被发送。这是我的代码:
// open file to PUT
RandomAccessFile file = new RandomAccessFile("myFile", "r");
long fileLength = file.length();
// create request (without content, i.e. no DefaultFullHttpRequest)
HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.PUT, path);
HttpHeaders headers = request.headers();
headers.set(HttpHeaders.Names.HOST, host);
headers.set(HttpHeaders.Names.CONTENT_LENGTH, fileLength);
// send request
ch.write(request);
// send body - is this correct?
ch.write(new DefaultFileRegion(file.getChannel(), 0, fileLength), ch.newProgressivePromise());
ch.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
// wait
ch.closeFuture().sync();
如果这样可行Expect:当然应该使用100-continue。 感谢任何提示。
答案 0 :(得分:0)
您应该使用DefaultFullHttpRequest
代替DefaultHttpRequest
这样做,您可以使用DefaultFullHttpRequest.content()
方法获取表示请求内容的ByteBuf
。只需通过调用ch.writeAndFlush( request )
发送请求,就可以将数据写入其中。