@SuppressWarnings({"unchecked"}) boolean sendRequest(final FilterChainContext ctx, final Request request, final HttpRequestPacket requestPacket, final BodyHandler bodyHandler) throws IOException { boolean isWriteComplete = true; if (bodyHandler != null) { // Check if the HTTP request has body final HttpTransactionContext context = HttpTransactionContext.get(ctx.getConnection()); context.bodyHandler = bodyHandler; if (LOGGER.isDebugEnabled()) { LOGGER.debug("REQUEST: " + requestPacket.toString()); } isWriteComplete = bodyHandler.doHandle(ctx, request, requestPacket); } else { if (LOGGER.isDebugEnabled()) { LOGGER.debug("REQUEST: " + requestPacket.toString()); } ctx.write(requestPacket, ctx.getTransportContext().getCompletionHandler()); } return isWriteComplete; }
System.out.println(request.toString());
@SuppressWarnings({"unchecked"}) @Override public NextAction handleConnect(FilterChainContext ctx) throws IOException { System.out.println("\nClient connected!\n"); HttpRequestPacket.Builder builder = createRequest(); HttpRequestPacket request = builder.build(); request.addHeader(Header.Host, HOST_HEADER_VALUE); System.out.println("Writing request:\n"); System.out.println(request.toString()); ctx.write(request); // write the request // for each of the content parts in CONTENT, wrap in a Buffer, // create the HttpContent to wrap the buffer and write the // content. MemoryManager mm = ctx.getConnection().getTransport().getMemoryManager(); for (int i = 0, len = CONTENT.length; i < len; i++) { HttpContent.Builder contentBuilder = request.httpContentBuilder(); Buffer b = Buffers.wrap(mm, CONTENT[i]); contentBuilder.content(b); HttpContent content = contentBuilder.build(); System.out.println(b.toStringContent()); ctx.write(content); } // since the request created by createRequest() is chunked, // we need to write the trailer to signify the end of the // POST data ctx.write(request.httpTrailerBuilder().build()); System.out.println("\n"); return ctx.getStopAction(); // discontinue filter chain execution }