@Test(expected = IllegalStateException.class)
public void getMultipartParts_explodes_if_multipartData_had_been_released() throws IOException {
// given
RequestInfoImpl<?> requestInfo = RequestInfoImpl.dummyInstanceForUnknownRequests();
Whitebox.setInternalState(requestInfo, "isMultipart", true);
Whitebox.setInternalState(requestInfo, "contentCharset", CharsetUtil.UTF_8);
Whitebox.setInternalState(requestInfo, "protocolVersion", HttpVersion.HTTP_1_1);
Whitebox.setInternalState(requestInfo, "method", HttpMethod.POST);
requestInfo.isCompleteRequestWithAllChunks = true;
requestInfo.rawContentBytes = KNOWN_MULTIPART_DATA_BODY.getBytes(CharsetUtil.UTF_8);
requestInfo.getHeaders().set("Content-Type", KNOWN_MULTIPART_DATA_CONTENT_TYPE_HEADER);
List<InterfaceHttpData> result = requestInfo.getMultipartParts();
assertThat(result, notNullValue());
assertThat(result.size(), is(1));
// expect
requestInfo.releaseMultipartData();
requestInfo.getMultipartParts();
fail("Expected an error, but none was thrown");
}
java类io.netty.handler.codec.http.HttpVersion的实例源码
RequestInfoImplTest.java 文件源码
项目:riposte
阅读 25
收藏 0
点赞 0
评论 0
HttpUploadServerHandler.java 文件源码
项目:cosmic
阅读 28
收藏 0
点赞 0
评论 0
private void writeResponse(final Channel channel, final HttpResponseStatus statusCode) {
// Convert the response content to a ChannelBuffer.
final ByteBuf buf = copiedBuffer(responseContent.toString(), CharsetUtil.UTF_8);
responseContent.setLength(0);
// Decide whether to close the connection or not.
final boolean close = HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(CONNECTION)) ||
request.getProtocolVersion().equals(HttpVersion.HTTP_1_0) && !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(CONNECTION));
// Build the response object.
final FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, statusCode, buf);
response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8");
if (!close) {
// There's no need to add 'Content-Length' header if this is the last response.
response.headers().set(CONTENT_LENGTH, buf.readableBytes());
}
// Write the response.
final ChannelFuture future = channel.writeAndFlush(response);
// Close the connection after the write operation is done if necessary.
if (close) {
future.addListener(ChannelFutureListener.CLOSE);
}
}
NettyHttpClient.java 文件源码
项目:GitHub
阅读 23
收藏 0
点赞 0
评论 0
private void sendRequest(HttpUrl url) {
start = System.nanoTime();
total = 0;
HttpRequest request = new DefaultFullHttpRequest(
HttpVersion.HTTP_1_1, HttpMethod.GET, url.encodedPath());
request.headers().set(HttpHeaders.Names.HOST, url.host());
request.headers().set(HttpHeaders.Names.ACCEPT_ENCODING, HttpHeaders.Values.GZIP);
channel.writeAndFlush(request);
}
NettyHttpClient.java 文件源码
项目:GitHub
阅读 22
收藏 0
点赞 0
评论 0
private void sendRequest(HttpUrl url) {
start = System.nanoTime();
total = 0;
HttpRequest request = new DefaultFullHttpRequest(
HttpVersion.HTTP_1_1, HttpMethod.GET, url.encodedPath());
request.headers().set(HttpHeaders.Names.HOST, url.host());
request.headers().set(HttpHeaders.Names.ACCEPT_ENCODING, HttpHeaders.Values.GZIP);
channel.writeAndFlush(request);
}
NettyHttpFileHandler.java 文件源码
项目:TFWebSock
阅读 29
收藏 0
点赞 0
评论 0
public void sendRedirect(ChannelHandlerContext ctx, String newUri) {
FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.FOUND);
response.headers().set(HttpHeaders.Names.LOCATION, newUri);
// Close the connection as soon as the error message is sent.
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}
NettyHttpFileHandler.java 文件源码
项目:TFWebSock
阅读 23
收藏 0
点赞 0
评论 0
public void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) {
FullHttpResponse response = new DefaultFullHttpResponse(
HttpVersion.HTTP_1_1, status, Unpooled.copiedBuffer("Failure: " + status + "\r\n", CharsetUtil.UTF_8));
response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/plain; charset=UTF-8");
// Close the connection as soon as the error message is sent.
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}
NettyHttpFileHandler.java 文件源码
项目:TFWebSock
阅读 25
收藏 0
点赞 0
评论 0
/**
* When file timestamp is the same as what the browser is sending up, send a "304 Not Modified"
*
* @param ctx
* Context
*/
public void sendNotModified(ChannelHandlerContext ctx) {
FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_MODIFIED);
setDateHeader(response);
// Close the connection as soon as the error message is sent.
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}
Recipes.java 文件源码
项目:xrpc
阅读 26
收藏 0
点赞 0
评论 0
public static FullHttpRequest newFullRequest(
HttpMethod method, String urlPath, ByteBuf payload, ContentType contentType) {
FullHttpRequest request =
new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, method, urlPath, payload);
request.headers().set(CONTENT_TYPE, contentType.value);
request.headers().setInt(CONTENT_LENGTH, payload.readableBytes());
return request;
}
HttpUtil.java 文件源码
项目:Limitart
阅读 21
收藏 0
点赞 0
评论 0
public static void sendResponse(Channel channel, HttpResponseStatus resultCode, ContentTypes contentType,
ByteBuf result, boolean isClose) {
channel.eventLoop().execute(() -> {
FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, resultCode, result);
response.headers().add(HttpHeaderNames.CONTENT_TYPE, contentType.getValue());
response.headers().add(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes() + "");
channel.writeAndFlush(response).addListener((ChannelFutureListener) arg0 -> {
if (isClose) {
arg0.channel().close();
}
});
});
}
Http1BackendHandlerTest.java 文件源码
项目:nitmproxy
阅读 21
收藏 0
点赞 0
评论 0
@Test
public void shouldHandleRequestsAndResponses() {
inboundChannel.pipeline().addLast(handler);
DefaultFullHttpRequest req = new DefaultFullHttpRequest(
HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
// First request
inboundChannel.write(req.retain());
assertEquals(1, inboundChannel.outboundMessages().size());
assertTrue(inboundChannel.outboundMessages().poll() instanceof ByteBuf);
// First response
DefaultFullHttpResponse resp = new DefaultFullHttpResponse(
HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
assertFalse(inboundChannel.writeInbound(resp));
assertEquals(1, outboundChannel.outboundMessages().size());
assertEquals(resp, outboundChannel.outboundMessages().poll());
// Second request
inboundChannel.write(req);
assertEquals(1, inboundChannel.outboundMessages().size());
assertTrue(inboundChannel.outboundMessages().poll() instanceof ByteBuf);
// Second response
assertFalse(inboundChannel.writeInbound(resp));
assertEquals(1, outboundChannel.outboundMessages().size());
assertEquals(resp, outboundChannel.outboundMessages().poll());
resp.release();
}