List of usage examples for io.netty.handler.codec.http HttpUtil getContentLength
public static int getContentLength(HttpMessage message, int defaultValue)
From source file:com.linecorp.armeria.internal.http.Http1ObjectEncoder.java
License:Apache License
private HttpObject convertClientHeaders(int streamId, HttpHeaders headers) throws Http2Exception { // Leading headers will always have :method, trailers will never have it. final HttpMethod method = headers.method(); if (method == null) { return convertTrailingHeaders(streamId, headers); }/*from w w w.j av a 2 s . c o m*/ // Convert leading headers. final HttpRequest req = new DefaultHttpRequest(HttpVersion.HTTP_1_1, method.toNettyMethod(), headers.path(), false); convert(streamId, headers, req.headers(), false); if (HttpUtil.getContentLength(req, -1L) >= 0) { // Avoid the case where both 'content-length' and 'transfer-encoding' are set. req.headers().remove(HttpHeaderNames.TRANSFER_ENCODING); } else { req.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED); } return req; }
From source file:com.linecorp.armeria.internal.http.Http1ObjectEncoder.java
License:Apache License
private static void setTransferEncoding(HttpMessage out) { final io.netty.handler.codec.http.HttpHeaders outHeaders = out.headers(); final long contentLength = HttpUtil.getContentLength(out, -1L); if (contentLength < 0) { // Use chunked encoding. outHeaders.set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED); outHeaders.remove(HttpHeaderNames.CONTENT_LENGTH); }// www .j a va 2s .c o m }
From source file:com.linecorp.armeria.internal.Http1ObjectEncoder.java
License:Apache License
private HttpObject convertClientHeaders(int streamId, HttpHeaders headers, boolean endStream) throws Http2Exception { // Leading headers will always have :method, trailers will never have it. final HttpMethod method = headers.method(); if (method == null) { return convertTrailingHeaders(streamId, headers); }//www . j a va 2 s .c o m // Convert leading headers. final String path = headers.path(); assert path != null; final HttpRequest req = new DefaultHttpRequest(HttpVersion.HTTP_1_1, io.netty.handler.codec.http.HttpMethod.valueOf(method.name()), path, false); convert(streamId, headers, req.headers(), false); if (endStream) { req.headers().remove(HttpHeaderNames.TRANSFER_ENCODING); req.headers().remove(HttpHeaderNames.CONTENT_LENGTH); } else if (HttpUtil.getContentLength(req, -1L) >= 0) { // Avoid the case where both 'content-length' and 'transfer-encoding' are set. req.headers().remove(HttpHeaderNames.TRANSFER_ENCODING); } else { req.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED); } return req; }
From source file:reactor.ipc.netty.http.HttpOperations.java
License:Open Source License
public NettyOutbound sendHeaders() { if (markHeadersAsSent()) { if (HttpUtil.isContentLengthSet(outboundHttpMessage())) { outboundHttpMessage().headers().remove(HttpHeaderNames.TRANSFER_ENCODING); } else if (!HttpUtil.isTransferEncodingChunked(outboundHttpMessage())) { HttpUtil.setContentLength(outboundHttpMessage(), 0L); }//from w w w. j ava 2 s . c om HttpMessage message; if (!HttpUtil.isTransferEncodingChunked(outboundHttpMessage()) && HttpUtil.getContentLength(outboundHttpMessage(), 0L) == 0L) { message = newFullEmptyBodyMessage(); } else { message = outboundHttpMessage(); } return then(FutureMono.deferFuture(() -> channel().writeAndFlush(message))); } else { return this; } }