List of usage examples for io.netty.handler.codec.http.multipart HttpPostRequestEncoder addBodyHttpData
public void addBodyHttpData(InterfaceHttpData data) throws ErrorDataEncoderException
From source file:com.github.ambry.frontend.FrontendIntegrationTest.java
License:Open Source License
/** * Creates a {@link HttpPostRequestEncoder} that encodes the given {@code request} and {@code blobContent}. * @param request the {@link HttpRequest} containing headers and other metadata about the request. * @param blobContent the {@link ByteBuffer} that represents the content of the blob. * @param usermetadata the {@link ByteBuffer} that represents user metadata * @return a {@link HttpPostRequestEncoder} that can encode the {@code request} and {@code blobContent}. * @throws HttpPostRequestEncoder.ErrorDataEncoderException * @throws IOException//from w w w . j av a 2s . co m */ private HttpPostRequestEncoder createEncoder(HttpRequest request, ByteBuffer blobContent, ByteBuffer usermetadata) throws HttpPostRequestEncoder.ErrorDataEncoderException, IOException { HttpDataFactory httpDataFactory = new DefaultHttpDataFactory(false); HttpPostRequestEncoder encoder = new HttpPostRequestEncoder(httpDataFactory, request, true); FileUpload fileUpload = new MemoryFileUpload(RestUtils.MultipartPost.BLOB_PART, RestUtils.MultipartPost.BLOB_PART, "application/octet-stream", "", Charset.forName("UTF-8"), blobContent.remaining()); fileUpload.setContent(Unpooled.wrappedBuffer(blobContent)); encoder.addBodyHttpData(fileUpload); fileUpload = new MemoryFileUpload(RestUtils.MultipartPost.USER_METADATA_PART, RestUtils.MultipartPost.USER_METADATA_PART, "application/octet-stream", "", Charset.forName("UTF-8"), usermetadata.remaining()); fileUpload.setContent(Unpooled.wrappedBuffer(usermetadata)); encoder.addBodyHttpData(fileUpload); return encoder; }
From source file:com.github.ambry.rest.NettyMessageProcessorTest.java
License:Open Source License
/** * Creates a {@link HttpPostRequestEncoder} that encodes the given {@code request} and {@code blobContent}. * @param request the {@link HttpRequest} containing headers and other metadata about the request. * @param blobContent the {@link ByteBuffer} that represents the content of the blob. * @return a {@link HttpPostRequestEncoder} that can encode the {@code request} and {@code blobContent}. * @throws HttpPostRequestEncoder.ErrorDataEncoderException * @throws IOException/*from w w w . j ava2 s . c o m*/ */ private HttpPostRequestEncoder createEncoder(HttpRequest request, ByteBuffer blobContent) throws HttpPostRequestEncoder.ErrorDataEncoderException, IOException { HttpDataFactory httpDataFactory = new DefaultHttpDataFactory(false); HttpPostRequestEncoder encoder = new HttpPostRequestEncoder(httpDataFactory, request, true); FileUpload fileUpload = new MemoryFileUpload(RestUtils.MultipartPost.BLOB_PART, RestUtils.MultipartPost.BLOB_PART, "application/octet-stream", "", Charset.forName("UTF-8"), blobContent.remaining()); fileUpload.setContent(Unpooled.wrappedBuffer(blobContent)); encoder.addBodyHttpData(fileUpload); return encoder; }
From source file:com.github.ambry.rest.NettyMultipartRequestTest.java
License:Open Source License
/** * Creates a {@link HttpPostRequestEncoder} that encodes the given {@code request} and {@code parts}. * @param request the {@link HttpRequest} containing headers and other metadata about the request. * @param parts the {@link InMemoryFile}s that will form the parts of the request. * @return a {@link HttpPostRequestEncoder} that can encode the {@code request} and {@code parts}. * @throws HttpPostRequestEncoder.ErrorDataEncoderException * @throws IOException//from ww w .j a v a 2s. co m */ private HttpPostRequestEncoder createEncoder(HttpRequest request, InMemoryFile[] parts) throws HttpPostRequestEncoder.ErrorDataEncoderException, IOException { HttpDataFactory httpDataFactory = new DefaultHttpDataFactory(false); HttpPostRequestEncoder encoder = new HttpPostRequestEncoder(httpDataFactory, request, true); if (parts != null) { for (InMemoryFile part : parts) { FileUpload fileUpload = new MemoryFileUpload(part.name, part.name, "application/octet-stream", "", Charset.forName("UTF-8"), part.content.remaining()); fileUpload.setContent(Unpooled.wrappedBuffer(part.content)); encoder.addBodyHttpData(fileUpload); } } return encoder; }
From source file:de.ocarthon.core.network.HttpClient.java
License:Apache License
public synchronized String postRequest(String query, List<Map.Entry<String, String>> postParameters, String filePostName, String fileName, ByteBuf fileData, String mime) { if (bootstrap == null) { setupBootstrap();// w w w . j a va 2s . c om } if (channel == null || forceReconnect) { ChannelFuture cf = bootstrap.connect(host, port); forceReconnect = false; cf.awaitUninterruptibly(); channel = cf.channel(); channel.pipeline().addLast("handler", new SimpleChannelInboundHandler<HttpObject>() { @Override protected void messageReceived(ChannelHandlerContext ctx, HttpObject msg) throws Exception { if (msg instanceof HttpResponse) { HttpResponse response = ((HttpResponse) msg); String connection = (String) response.headers().get(HttpHeaderNames.CONNECTION); if (connection != null && connection.equalsIgnoreCase(HttpHeaderValues.CLOSE.toString())) forceReconnect = true; } if (msg instanceof HttpContent) { HttpContent chunk = (HttpContent) msg; String message = chunk.content().toString(CharsetUtil.UTF_8); if (!message.isEmpty()) { result[0] = message; synchronized (result) { result.notify(); } } } } }); } boolean isFileAttached = fileData != null && fileData.isReadable(); HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, scheme + "://" + host + ":" + port + "/" + query); HttpPostRequestEncoder bodyReqEncoder; try { bodyReqEncoder = new HttpPostRequestEncoder(httpDataFactory, request, isFileAttached); for (Map.Entry<String, String> entry : postParameters) { bodyReqEncoder.addBodyAttribute(entry.getKey(), entry.getValue()); } if (isFileAttached) { if (mime == null) mime = "application/octet-stream"; MixedFileUpload mfu = new MixedFileUpload(filePostName, fileName, mime, "binary", null, fileData.capacity(), DefaultHttpDataFactory.MINSIZE); mfu.addContent(fileData, true); bodyReqEncoder.addBodyHttpData(mfu); } HttpHeaders headers = request.headers(); headers.set(HttpHeaderNames.HOST, host); headers.set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); headers.set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP); headers.set(HttpHeaderNames.USER_AGENT, "OcarthonCore HttpClient"); request = bodyReqEncoder.finalizeRequest(); } catch (Exception e) { throw new NullPointerException("key or value is empty or null"); } channel.write(request); if (bodyReqEncoder.isChunked()) { channel.write(bodyReqEncoder); } channel.flush(); synchronized (result) { try { result.wait(); } catch (InterruptedException e) { return null; } } return result[0]; }
From source file:divconq.api.internal.UploadPostHandler.java
License:Open Source License
public void start(final HyperSession parent, ReadableByteChannel src, String chanid, Map<String, Cookie> cookies, long size, final OperationCallback callback) { this.src = src; this.cookies = cookies; this.callback = callback; this.dest = this.allocateChannel(parent, callback); if (this.callback.hasErrors()) { callback.complete();// ww w . j a v a 2s . co m return; } // send a request to get things going HttpDataFactory factory = new DefaultHttpDataFactory(false); // no disk HttpRequest req = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/upload/" + chanid + "/Final"); req.headers().set(Names.HOST, parent.getInfo().getHost()); req.headers().set(Names.USER_AGENT, "DivConq HyperAPI Client 1.0"); req.headers().set(Names.CONNECTION, HttpHeaders.Values.CLOSE); req.headers().set(Names.COOKIE, ClientCookieEncoder.encode(this.cookies.values())); req.headers().set(Names.TRANSFER_ENCODING, Values.CHUNKED); HttpPostRequestEncoder bodyRequestEncoder = null; try { bodyRequestEncoder = new HttpPostRequestEncoder(factory, req, true); // true => multipart bodyRequestEncoder.addBodyHttpData(new UploadStream(src, "file", "fname", "application/octet-stream", "binary", null, size, callback)); req = bodyRequestEncoder.finalizeRequest(); } catch (ErrorDataEncoderException x) { callback.error(1, "Problem with send encoder: " + x); callback.complete(); return; } // send request headers this.dest.write(req); try { this.dest.writeAndFlush(bodyRequestEncoder).sync(); // wait for a response - then close, see messageReceived } catch (InterruptedException x) { callback.error(1, "Unable to write to socket: " + x); callback.complete(); } }
From source file:org.ballerinalang.stdlib.utils.MultipartUtils.java
License:Open Source License
/** * Encode a given body part and add it to multipart request encoder. * * @param nettyEncoder Helps encode multipart/form-data * @param httpRequest Represent top level http request that should hold multiparts * @param bodyPart Represent a ballerina body part * @throws HttpPostRequestEncoder.ErrorDataEncoderException when an error occurs while encoding *///from www. java 2 s .com private static void encodeBodyPart(HttpPostRequestEncoder nettyEncoder, HttpRequest httpRequest, BMap<String, BValue> bodyPart) throws HttpPostRequestEncoder.ErrorDataEncoderException { try { InterfaceHttpData encodedData; Channel byteChannel = EntityBodyHandler.getByteChannel(bodyPart); FileUploadContentHolder contentHolder = new FileUploadContentHolder(); contentHolder.setRequest(httpRequest); contentHolder.setBodyPartName(getBodyPartName(bodyPart)); contentHolder.setFileName(TEMP_FILE_NAME + TEMP_FILE_EXTENSION); contentHolder.setContentType(MimeUtil.getBaseType(bodyPart)); contentHolder.setBodyPartFormat(MimeConstants.BodyPartForm.INPUTSTREAM); String contentTransferHeaderValue = HeaderUtil.getHeaderValue(bodyPart, HttpHeaderNames.CONTENT_TRANSFER_ENCODING.toString()); if (contentTransferHeaderValue != null) { contentHolder.setContentTransferEncoding(contentTransferHeaderValue); } if (byteChannel != null) { contentHolder.setContentStream(byteChannel.getInputStream()); encodedData = getFileUpload(contentHolder); if (encodedData != null) { nettyEncoder.addBodyHttpData(encodedData); } } } catch (IOException e) { LOG.error("Error occurred while encoding body part in ", e.getMessage()); } }
From source file:org.ballerinalang.test.mime.Util.java
License:Open Source License
/** * Encode a given body part and add it to multipart request encoder. * * @param nettyEncoder Helps encode multipart/form-data * @param httpRequest Represent top level http request that should hold multiparts * @param bodyPart Represent a ballerina body part * @throws HttpPostRequestEncoder.ErrorDataEncoderException when an error occurs while encoding *//* w ww. j av a 2 s . c o m*/ private static void encodeBodyPart(HttpPostRequestEncoder nettyEncoder, HttpRequest httpRequest, BMap<String, BValue> bodyPart) throws HttpPostRequestEncoder.ErrorDataEncoderException { try { InterfaceHttpData encodedData; Channel byteChannel = EntityBodyHandler.getByteChannel(bodyPart); FileUploadContentHolder contentHolder = new FileUploadContentHolder(); contentHolder.setRequest(httpRequest); contentHolder.setBodyPartName(getBodyPartName(bodyPart)); contentHolder.setFileName(TEMP_FILE_NAME + TEMP_FILE_EXTENSION); contentHolder.setContentType(MimeUtil.getBaseType(bodyPart)); contentHolder.setBodyPartFormat(MimeConstants.BodyPartForm.INPUTSTREAM); String contentTransferHeaderValue = HeaderUtil.getHeaderValue(bodyPart, HttpHeaderNames.CONTENT_TRANSFER_ENCODING.toString()); if (contentTransferHeaderValue != null) { contentHolder.setContentTransferEncoding(contentTransferHeaderValue); } if (byteChannel != null) { contentHolder.setContentStream(byteChannel.getInputStream()); encodedData = getFileUpload(contentHolder); if (encodedData != null) { nettyEncoder.addBodyHttpData(encodedData); } } } catch (IOException e) { log.error("Error occurred while encoding body part in ", e.getMessage()); } }