List of usage examples for org.apache.http.entity.mime MIME DEFAULT_CHARSET
Charset DEFAULT_CHARSET
To view the source code for org.apache.http.entity.mime MIME DEFAULT_CHARSET.
Click Source Link
From source file:nl.nn.adapterframework.http.mime.MultipartForm.java
private static void writeBytes(final String s, final OutputStream out) throws IOException { final ByteArrayBuffer b = encode(MIME.DEFAULT_CHARSET, s); writeBytes(b, out);// w w w .j av a 2 s. c o m }
From source file:org.apache.manifoldcf.agents.output.solr.ModifiedHttpMultipart.java
private static void writeBytes(final String s, final OutputStream out) throws IOException { ByteArrayBuffer b = encode(MIME.DEFAULT_CHARSET, s); writeBytes(b, out);/* w w w . j ava 2s. co m*/ }
From source file:ch.cyberduck.core.http.DelayedHttpMultipartEntity.java
/** * @param status Length/*from w w w . jav a2 s.c o m*/ */ public DelayedHttpMultipartEntity(final String filename, final TransferStatus status, final String boundary) { this.status = status; final StringBuilder multipartHeader = new StringBuilder(); multipartHeader.append(TWO_DASHES); multipartHeader.append(boundary); multipartHeader.append(CR_LF); multipartHeader .append(String.format("Content-Disposition: form-data; name=\"file\"; filename=\"%s\"", filename)); multipartHeader.append(CR_LF); multipartHeader.append(String.format("%s: %s", HTTP.CONTENT_TYPE, StringUtils.isBlank(status.getMime()) ? MimeTypeService.DEFAULT_CONTENT_TYPE : status.getMime())); multipartHeader.append(CR_LF); multipartHeader.append(CR_LF); header = encode(MIME.DEFAULT_CHARSET, multipartHeader.toString()).buffer(); final StringBuilder multipartFooter = new StringBuilder(); multipartFooter.append(CR_LF); multipartFooter.append(TWO_DASHES); multipartFooter.append(boundary); multipartFooter.append(TWO_DASHES); multipartFooter.append(CR_LF); footer = encode(MIME.DEFAULT_CHARSET, multipartFooter.toString()).buffer(); }
From source file:nl.nn.adapterframework.http.mime.MultipartForm.java
/** * Creates an instance with the specified settings. * * @param charset the character set to use. May be {@code null}, in which case {@link MIME#DEFAULT_CHARSET} - i.e. US-ASCII - is used. * @param boundary to use - must not be {@code null} * @throws IllegalArgumentException if charset is null or boundary is null *//*from www. ja v a 2 s . co m*/ public MultipartForm(final Charset charset, final String boundary, final List<FormBodyPart> parts) { Args.notNull(boundary, "Multipart boundary"); this.charset = charset != null ? charset : MIME.DEFAULT_CHARSET; this.boundary = boundary; this.parts = parts; }
From source file:org.apache.manifoldcf.agents.output.solr.ModifiedHttpMultipart.java
/** * Creates an instance with the specified settings. * * @param subType mime subtype - must not be {@code null} * @param charset the character set to use. May be {@code null}, in which case {@link MIME#DEFAULT_CHARSET} - i.e. US-ASCII - is used. * @param boundary to use - must not be {@code null} * @param mode the mode to use/*from www. j a va 2s . c o m*/ * @throws IllegalArgumentException if charset is null or boundary is null */ public ModifiedHttpMultipart(final String subType, final Charset charset, final String boundary, HttpMultipartMode mode) { super(); if (subType == null) { throw new IllegalArgumentException("Multipart subtype may not be null"); } if (boundary == null) { throw new IllegalArgumentException("Multipart boundary may not be null"); } this.subType = subType; this.charset = charset != null ? charset : MIME.DEFAULT_CHARSET; this.boundary = boundary; this.parts = new ArrayList<FormBodyPart>(); this.mode = mode; }
From source file:org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.java
/** * //from w ww . jav a2s . c o m * @param post {@link HttpPost} * @return String posted body if computable * @throws IOException if sending the data fails due to I/O */ protected String sendPostData(HttpPost post) throws IOException { // Buffer to hold the post body, except file content StringBuilder postedBody = new StringBuilder(1000); HTTPFileArg[] files = getHTTPFiles(); final String contentEncoding = getContentEncodingOrNull(); final boolean haveContentEncoding = contentEncoding != null; // Check if we should do a multipart/form-data or an // application/x-www-form-urlencoded post request if (getUseMultipartForPost()) { // If a content encoding is specified, we use that as the // encoding of any parameter values Charset charset = null; if (haveContentEncoding) { charset = Charset.forName(contentEncoding); } else { charset = MIME.DEFAULT_CHARSET; } if (log.isDebugEnabled()) { log.debug("Building multipart with:getDoBrowserCompatibleMultipart():" + getDoBrowserCompatibleMultipart() + ", with charset:" + charset + ", haveContentEncoding:" + haveContentEncoding); } // Write the request to our own stream MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create().setCharset(charset); if (getDoBrowserCompatibleMultipart()) { multipartEntityBuilder.setLaxMode(); } else { multipartEntityBuilder.setStrictMode(); } // Create the parts // Add any parameters for (JMeterProperty jMeterProperty : getArguments()) { HTTPArgument arg = (HTTPArgument) jMeterProperty.getObjectValue(); String parameterName = arg.getName(); if (arg.isSkippable(parameterName)) { continue; } StringBody stringBody = new StringBody(arg.getValue(), ContentType.create("text/plain", charset)); FormBodyPart formPart = FormBodyPartBuilder.create(parameterName, stringBody).build(); multipartEntityBuilder.addPart(formPart); } // Add any files // Cannot retrieve parts once added to the MultiPartEntity, so have to save them here. ViewableFileBody[] fileBodies = new ViewableFileBody[files.length]; for (int i = 0; i < files.length; i++) { HTTPFileArg file = files[i]; File reservedFile = FileServer.getFileServer().getResolvedFile(file.getPath()); fileBodies[i] = new ViewableFileBody(reservedFile, file.getMimeType()); multipartEntityBuilder.addPart(file.getParamName(), fileBodies[i]); } HttpEntity entity = multipartEntityBuilder.build(); post.setEntity(entity); if (entity.isRepeatable()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); for (ViewableFileBody fileBody : fileBodies) { fileBody.hideFileData = true; } entity.writeTo(bos); for (ViewableFileBody fileBody : fileBodies) { fileBody.hideFileData = false; } bos.flush(); // We get the posted bytes using the encoding used to create it postedBody.append(new String(bos.toByteArray(), contentEncoding == null ? "US-ASCII" // $NON-NLS-1$ this is the default used by HttpClient : contentEncoding)); bos.close(); } else { postedBody.append("<Multipart was not repeatable, cannot view what was sent>"); // $NON-NLS-1$ } // // Set the content type TODO - needed? // String multiPartContentType = multiPart.getContentType().getValue(); // post.setHeader(HEADER_CONTENT_TYPE, multiPartContentType); } else { // not multipart // Check if the header manager had a content type header // This allows the user to specify his own content-type for a POST request Header contentTypeHeader = post.getFirstHeader(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.getValue() != null && contentTypeHeader.getValue().length() > 0; // If there are no arguments, we can send a file as the body of the request // TODO: needs a multiple file upload scenerio if (!hasArguments() && getSendFileAsPostBody()) { // If getSendFileAsPostBody returned true, it's sure that file is not null HTTPFileArg file = files[0]; if (!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type if (file.getMimeType() != null && file.getMimeType().length() > 0) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } FileEntity fileRequestEntity = new FileEntity(new File(file.getPath()), (ContentType) null);// TODO is null correct? post.setEntity(fileRequestEntity); // We just add placeholder text for file content postedBody.append("<actual file content, not shown here>"); } else { // In a post request which is not multipart, we only support // parameters, no file upload is allowed // If a content encoding is specified, we set it as http parameter, so that // the post body will be encoded in the specified content encoding if (haveContentEncoding) { post.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, contentEncoding); } // If none of the arguments have a name specified, we // just send all the values as the post body if (getSendParameterValuesAsPostBody()) { // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters // TODO: needs a multiple file upload scenerio if (!hasContentTypeHeader) { HTTPFileArg file = files.length > 0 ? files[0] : null; if (file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { // TODO - is this the correct default? post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } // Just append all the parameter values, and use that as the post body StringBuilder postBody = new StringBuilder(); for (JMeterProperty jMeterProperty : getArguments()) { HTTPArgument arg = (HTTPArgument) jMeterProperty.getObjectValue(); // Note: if "Encoded?" is not selected, arg.getEncodedValue is equivalent to arg.getValue if (haveContentEncoding) { postBody.append(arg.getEncodedValue(contentEncoding)); } else { postBody.append(arg.getEncodedValue()); } } // Let StringEntity perform the encoding StringEntity requestEntity = new StringEntity(postBody.toString(), contentEncoding); post.setEntity(requestEntity); postedBody.append(postBody.toString()); } else { // It is a normal post request, with parameter names and values // Set the content type if (!hasContentTypeHeader) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } // Add the parameters PropertyIterator args = getArguments().iterator(); List<NameValuePair> nvps = new ArrayList<>(); String urlContentEncoding = contentEncoding; if (urlContentEncoding == null || urlContentEncoding.length() == 0) { // Use the default encoding for urls urlContentEncoding = EncoderCache.URL_ARGUMENT_ENCODING; } while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); // The HTTPClient always urlencodes both name and value, // so if the argument is already encoded, we have to decode // it before adding it to the post request String parameterName = arg.getName(); if (arg.isSkippable(parameterName)) { continue; } String parameterValue = arg.getValue(); if (!arg.isAlwaysEncoded()) { // The value is already encoded by the user // Must decode the value now, so that when the // httpclient encodes it, we end up with the same value // as the user had entered. parameterName = URLDecoder.decode(parameterName, urlContentEncoding); parameterValue = URLDecoder.decode(parameterValue, urlContentEncoding); } // Add the parameter, httpclient will urlencode it nvps.add(new BasicNameValuePair(parameterName, parameterValue)); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(nvps, urlContentEncoding); post.setEntity(entity); if (entity.isRepeatable()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); post.getEntity().writeTo(bos); bos.flush(); // We get the posted bytes using the encoding used to create it if (contentEncoding != null) { postedBody.append(new String(bos.toByteArray(), contentEncoding)); } else { postedBody.append(new String(bos.toByteArray(), SampleResult.DEFAULT_HTTP_ENCODING)); } bos.close(); } else { postedBody.append("<RequestEntity was not repeatable, cannot view what was sent>"); } } } } return postedBody.toString(); }