Example usage for org.apache.http.client.methods RequestBuilder setConfig

List of usage examples for org.apache.http.client.methods RequestBuilder setConfig

Introduction

In this page you can find the example usage for org.apache.http.client.methods RequestBuilder setConfig.

Prototype

public RequestBuilder setConfig(final RequestConfig config) 

Source Link

Usage

From source file:com.linkedin.pinot.common.utils.FileUploadDownloadClient.java

private static void setTimeout(RequestBuilder requestBuilder, int socketTimeoutMs) {
    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeoutMs).build();
    requestBuilder.setConfig(requestConfig);
}

From source file:com.aliyun.api.gateway.demo.Client.java

/**
 * ??// w  ww  .j  av a 2s .c  o m
 *
 * @param request
 *            requestnull{@link NullPointerException}
 * @return HttpResponse HTTP?
 * @throws IOException
 *             HTTP?
 * @throws ClientProtocolException
 *             ????
 */
public HttpResponse execute(Request request) throws ClientProtocolException, IOException {
    if (request == null) {
        return null;
    }
    RequestBuilder requestBuilder = request.getMethod().requestbuilder().setUri(request.getUrl().toString());
    requestBuilder
            .setConfig(RequestConfig.custom().setConnectTimeout(getTimeout(request.getTimeout())).build());
    requestBuilder.addHeader(SystemHeader.X_CA_TIMESTAMP, String.valueOf(System.currentTimeMillis()));
    requestBuilder.addHeader(SystemHeader.X_CA_NONCE, UUID.randomUUID().toString());
    requestBuilder.addHeader(SystemHeader.X_CA_KEY, appKey);
    if (testEnv) {
        requestBuilder.addHeader(SystemHeader.X_CA_STAGE, "test");
    }
    requestBuilder.build().getAllHeaders();
    initialBasicHeader(requestBuilder, request.getHeaders(), request.getUrl(), request.getFormBody(),
            request.getSignHeaderPrefixes());
    HttpEntity entity = getEntity(request);
    if (entity != null) {
        requestBuilder.setEntity(entity);
    }
    return httpClient.execute(requestBuilder.build());
}

From source file:feign.httpclient.ApacheHttpClient.java

HttpUriRequest toHttpUriRequest(Request request, Request.Options options)
        throws UnsupportedEncodingException, MalformedURLException, URISyntaxException {
    RequestBuilder requestBuilder = RequestBuilder.create(request.method());

    //per request timeouts
    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(options.connectTimeoutMillis())
            .setSocketTimeout(options.readTimeoutMillis()).build();
    requestBuilder.setConfig(requestConfig);

    URI uri = new URIBuilder(request.url()).build();

    requestBuilder.setUri(uri.getScheme() + "://" + uri.getAuthority() + uri.getRawPath());

    //request query params
    List<NameValuePair> queryParams = URLEncodedUtils.parse(uri, requestBuilder.getCharset().name());
    for (NameValuePair queryParam : queryParams) {
        requestBuilder.addParameter(queryParam);
    }/*from   ww w .j ava 2 s .com*/

    //request headers
    boolean hasAcceptHeader = false;
    for (Map.Entry<String, Collection<String>> headerEntry : request.headers().entrySet()) {
        String headerName = headerEntry.getKey();
        if (headerName.equalsIgnoreCase(ACCEPT_HEADER_NAME)) {
            hasAcceptHeader = true;
        }

        if (headerName.equalsIgnoreCase(Util.CONTENT_LENGTH)) {
            // The 'Content-Length' header is always set by the Apache client and it
            // doesn't like us to set it as well.
            continue;
        }

        for (String headerValue : headerEntry.getValue()) {
            requestBuilder.addHeader(headerName, headerValue);
        }
    }
    //some servers choke on the default accept string, so we'll set it to anything
    if (!hasAcceptHeader) {
        requestBuilder.addHeader(ACCEPT_HEADER_NAME, "*/*");
    }

    //request body
    if (request.body() != null) {
        HttpEntity entity = null;
        if (request.charset() != null) {
            ContentType contentType = getContentType(request);
            String content = new String(request.body(), request.charset());
            entity = new StringEntity(content, contentType);
        } else {
            entity = new ByteArrayEntity(request.body());
        }

        requestBuilder.setEntity(entity);
    }

    return requestBuilder.build();
}

From source file:org.daybreak.coccinella.webmagic.ImageDownloader.java

@Override
public Page download(Request request, Task task) {
    Site site = null;//  ww w  . j  a va 2s .co  m
    if (task != null) {
        site = task.getSite();
    }
    Set<Integer> acceptStatCode;
    String charset = null;
    Map<String, String> headers = null;
    if (site != null) {
        acceptStatCode = site.getAcceptStatCode();
        charset = site.getCharset();
        headers = site.getHeaders();
    } else {
        acceptStatCode = Sets.newHashSet(200);
    }
    logger.info("downloading image " + request.getUrl());
    RequestBuilder requestBuilder;
    if (request instanceof CrawlerRequest) {
        CrawlerRequest crawlerRequest = (CrawlerRequest) request;
        try {
            requestBuilder = RequestBuilder.post().setUri(crawlerRequest.getUrl())
                    .setEntity(crawlerRequest.createEntity());
        } catch (UnsupportedEncodingException ex) {
            logger.warn("The encoding is not supported: " + crawlerRequest.getCrawler().getEncode());
            return null;
        }
    } else {
        requestBuilder = RequestBuilder.get().setUri(request.getUrl());
    }
    if (headers != null) {
        for (Map.Entry<String, String> headerEntry : headers.entrySet()) {
            requestBuilder.addHeader(headerEntry.getKey(), headerEntry.getValue());
        }
    }
    RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
            .setConnectionRequestTimeout(site.getTimeOut()).setSocketTimeout(site.getTimeOut())
            .setConnectTimeout(site.getTimeOut()).setCookieSpec(CookieSpecs.BEST_MATCH);
    if (site != null && site.getHttpProxy() != null) {
        requestConfigBuilder.setProxy(site.getHttpProxy());
    }
    requestBuilder.setConfig(requestConfigBuilder.build());
    CloseableHttpResponse httpResponse = null;
    try {
        httpResponse = getHttpClient(site).execute(requestBuilder.build());
        int statusCode = httpResponse.getStatusLine().getStatusCode();
        if (acceptStatCode.contains(statusCode)) {
            ImagePage imagePage = new ImagePage(ImageIO.read(httpResponse.getEntity().getContent()));
            imagePage.setRawText("");
            imagePage.setUrl(new PlainText(request.getUrl()));
            imagePage.setRequest(request);
            imagePage.setStatusCode(httpResponse.getStatusLine().getStatusCode());
            return imagePage;
        } else {
            logger.warn("code error " + statusCode + "\t" + request.getUrl());
            return null;
        }
    } catch (IOException e) {
        logger.warn("download image " + request.getUrl() + " error", e);
        if (site.getCycleRetryTimes() > 0) {
            return addToCycleRetry(request, site);
        }
        return null;
    } finally {
        try {
            if (httpResponse != null) {
                //ensure the connection is released back to pool
                EntityUtils.consume(httpResponse.getEntity());
            }
        } catch (IOException e) {
            logger.warn("close response fail", e);
        }
    }
}

From source file:org.springframework.cloud.netflix.ribbon.apache.RibbonApacheHttpRequest.java

public HttpUriRequest toRequest(final RequestConfig requestConfig) {
    final RequestBuilder builder = RequestBuilder.create(this.context.getMethod());
    builder.setUri(this.uri);
    for (final String name : this.context.getHeaders().keySet()) {
        final List<String> values = this.context.getHeaders().get(name);
        for (final String value : values) {
            builder.addHeader(name, value);
        }/*from  www  . java  2  s .  c  o m*/
    }

    for (final String name : this.context.getParams().keySet()) {
        final List<String> values = this.context.getParams().get(name);
        for (final String value : values) {
            builder.addParameter(name, value);
        }
    }

    if (this.context.getRequestEntity() != null) {
        final BasicHttpEntity entity;
        entity = new BasicHttpEntity();
        entity.setContent(this.context.getRequestEntity());
        // if the entity contentLength isn't set, transfer-encoding will be set
        // to chunked in org.apache.http.protocol.RequestContent. See gh-1042
        if (this.context.getContentLength() != null) {
            entity.setContentLength(this.context.getContentLength());
        } else if ("GET".equals(this.context.getMethod())) {
            entity.setContentLength(0);
        }
        builder.setEntity(entity);
    }

    customize(this.context.getRequestCustomizers(), builder);

    builder.setConfig(requestConfig);
    return builder.build();
}

From source file:nya.miku.wishmaster.http.streamer.HttpStreamer.java

/**
 * HTTP ?  ?. ? ?  ? ?,    release()  !/* w w  w  .j a  v  a 2 s .c  o  m*/
 * ?   ? ?? ? ?  If-Modified-Since,  ?      
 *  ? ?? ?    Modified ({@link #removeFromModifiedMap(String)})!
 * @param url ? ?
 * @param requestModel  ? (  null,   GET   If-Modified)
 * @param httpClient HTTP , ?? ?
 * @param listener ? ?? ?? (  null)
 * @param task ,     (  null)
 * @return  ?     HTTP 
 * @throws HttpRequestException ?, ?  ?  ?
 */
public HttpResponseModel getFromUrl(String url, HttpRequestModel requestModel, HttpClient httpClient,
        ProgressListener listener, CancellableTask task) throws HttpRequestException {
    if (requestModel == null)
        requestModel = HttpRequestModel.builder().setGET().build();

    // Request
    HttpUriRequest request = null;
    try {
        RequestConfig requestConfigBuilder = ExtendedHttpClient
                .getDefaultRequestConfigBuilder(requestModel.timeoutValue)
                .setRedirectsEnabled(!requestModel.noRedirect).build();

        RequestBuilder requestBuilder = null;
        switch (requestModel.method) {
        case HttpRequestModel.METHOD_GET:
            requestBuilder = RequestBuilder.get().setUri(url);
            break;
        case HttpRequestModel.METHOD_POST:
            requestBuilder = RequestBuilder.post().setUri(url).setEntity(requestModel.postEntity);
            break;
        default:
            throw new IllegalArgumentException("Incorrect type of HTTP Request");
        }
        if (requestModel.customHeaders != null) {
            for (Header header : requestModel.customHeaders) {
                requestBuilder.addHeader(header);
            }
        }
        if (requestModel.checkIfModified && requestModel.method == HttpRequestModel.METHOD_GET) {
            synchronized (ifModifiedMap) {
                if (ifModifiedMap.containsKey(url)) {
                    requestBuilder
                            .addHeader(new BasicHeader(HttpHeaders.IF_MODIFIED_SINCE, ifModifiedMap.get(url)));
                }
            }
        }
        request = requestBuilder.setConfig(requestConfigBuilder).build();
    } catch (Exception e) {
        Logger.e(TAG, e);
        HttpResponseModel.release(request, null);
        throw new IllegalArgumentException(e);
    }
    // ?
    HttpResponseModel responseModel = new HttpResponseModel();
    HttpResponse response = null;
    try {
        IOException responseException = null;
        for (int i = 0; i < 5; ++i) {
            try {
                if (task != null && task.isCancelled())
                    throw new InterruptedException();
                response = httpClient.execute(request);
                responseException = null;
                break;
            } catch (IOException e) {
                Logger.e(TAG, e);
                responseException = e;
                if (e.getMessage() == null)
                    break;
                if (e.getMessage().indexOf("Connection reset by peer") != -1
                        || e.getMessage().indexOf("I/O error during system call, Broken pipe") != -1) {
                    continue;
                } else {
                    break;
                }
            }
        }
        if (responseException != null) {
            throw responseException;
        }
        if (task != null && task.isCancelled())
            throw new InterruptedException();
        //  ???? HTTP
        StatusLine status = response.getStatusLine();
        responseModel.statusCode = status.getStatusCode();
        responseModel.statusReason = status.getReasonPhrase();
        //   (headers)
        String lastModifiedValue = null;
        if (responseModel.statusCode == 200) {
            Header header = response.getFirstHeader(HttpHeaders.LAST_MODIFIED);
            if (header != null)
                lastModifiedValue = header.getValue();
        }
        Header header = response.getFirstHeader(HttpHeaders.LOCATION);
        if (header != null)
            responseModel.locationHeader = header.getValue();
        responseModel.headers = response.getAllHeaders();
        //
        HttpEntity responseEntity = response.getEntity();
        if (responseEntity != null) {
            responseModel.contentLength = responseEntity.getContentLength();
            if (listener != null)
                listener.setMaxValue(responseModel.contentLength);
            InputStream stream = responseEntity.getContent();
            responseModel.stream = IOUtils.modifyInputStream(stream, listener, task);
        }
        responseModel.request = request;
        responseModel.response = response;
        if (lastModifiedValue != null) {
            synchronized (ifModifiedMap) {
                ifModifiedMap.put(url, lastModifiedValue);
            }
        }
    } catch (Exception e) {
        Logger.e(TAG, e);
        HttpResponseModel.release(request, response);
        throw new HttpRequestException(e);
    }

    return responseModel;
}

From source file:cn.wanghaomiao.seimi.http.hc.HcRequestGenerator.java

public static RequestBuilder getHttpRequestBuilder(Request request, CrawlerModel crawlerModel) {
    RequestBuilder requestBuilder;
    BaseSeimiCrawler crawler = crawlerModel.getInstance();
    if (request.isUseSeimiAgent()) {
        if (StringUtils.isBlank(crawler.seimiAgentHost())) {
            throw new SeimiProcessExcepiton("SeimiAgentHost is blank.");
        }//from   www  .  ja  v a  2s .co  m
        String seimiAgentUrl = "http://" + crawler.seimiAgentHost()
                + (crawler.seimiAgentPort() != 80 ? (":" + crawler.seimiAgentPort()) : "") + "/doload";
        requestBuilder = RequestBuilder.post().setUri(seimiAgentUrl);
        requestBuilder.addParameter("url", request.getUrl());
        if (StringUtils.isNotBlank(crawler.proxy())) {
            requestBuilder.addParameter("proxy", crawler.proxy());
        }
        if (request.getSeimiAgentRenderTime() > 0) {
            requestBuilder.addParameter("renderTime", String.valueOf(request.getSeimiAgentRenderTime()));
        }
        if (StringUtils.isNotBlank(request.getSeimiAgentScript())) {
            requestBuilder.addParameter("script", request.getSeimiAgentScript());
        }
        //SeimiAgent?cookie
        if ((request.isSeimiAgentUseCookie() == null && crawlerModel.isUseCookie())
                || (request.isSeimiAgentUseCookie() != null && request.isSeimiAgentUseCookie())) {
            requestBuilder.addParameter("useCookie", "1");
        }
        if (request.getParams() != null && request.getParams().size() > 0) {
            requestBuilder.addParameter("postParam", JSON.toJSONString(request.getParams()));
        }
        if (request.getSeimiAgentContentType().val() > SeimiAgentContentType.HTML.val()) {
            requestBuilder.addParameter("contentType", request.getSeimiAgentContentType().typeVal());
        }
    } else {
        if (HttpMethod.POST.equals(request.getHttpMethod())) {
            requestBuilder = RequestBuilder.post().setUri(request.getUrl());
        } else {
            requestBuilder = RequestBuilder.get().setUri(request.getUrl());
        }
        RequestConfig config = RequestConfig.custom().setProxy(crawlerModel.getProxy())
                .setCircularRedirectsAllowed(true).build();

        if (request.getParams() != null) {
            for (Map.Entry<String, String> entry : request.getParams().entrySet()) {
                requestBuilder.addParameter(entry.getKey(), entry.getValue());
            }
        }
        requestBuilder.setConfig(config).setHeader("User-Agent",
                crawlerModel.isUseCookie() ? crawlerModel.getCurrentUA() : crawler.getUserAgent());
        requestBuilder.setHeader("Accept",
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        requestBuilder.setHeader("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6");
    }
    if (!CollectionUtils.isEmpty(request.getHeader())) {
        for (Map.Entry<String, String> entry : request.getHeader().entrySet()) {
            requestBuilder.setHeader(entry.getKey(), entry.getValue());
        }
    }
    return requestBuilder;
}

From source file:org.bonitasoft.connectors.rest.RESTConnector.java

/**
 * Execute a given request/*from  w  w w.jav a 2s.c om*/
 * 
 * @param request The request to execute
 * @return The response of the executed request
 * @throws Exception any exception that might occur
 */
public void execute(final Request request) throws Exception {
    CloseableHttpClient httpClient = null;

    try {
        final URL url = request.getUrl();
        final String urlHost = url.getHost();

        final Builder requestConfigurationBuilder = RequestConfig.custom();
        requestConfigurationBuilder.setConnectionRequestTimeout(CONNECTION_TIMEOUT);
        requestConfigurationBuilder.setRedirectsEnabled(request.isRedirect());

        final HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
        httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(0, false));
        setSSL(request.getSsl(), httpClientBuilder);
        setProxy(request.getProxy(), httpClientBuilder, requestConfigurationBuilder);
        setCookies(requestConfigurationBuilder, httpClientBuilder, request.getCookies(), urlHost);

        final RequestBuilder requestBuilder = getRequestBuilderFromMethod(request.getRestMethod());
        requestBuilder.setVersion(
                new ProtocolVersion(HTTP_PROTOCOL, HTTP_PROTOCOL_VERSION_MAJOR, HTTP_PROTOCOL_VERSION_MINOR));
        int urlPort = url.getPort();
        if (url.getPort() == -1) {
            urlPort = url.getDefaultPort();
        }
        final String urlProtocol = url.getProtocol();
        final String urlStr = url.toString();
        requestBuilder.setUri(urlStr);
        setHeaders(requestBuilder, request.getHeaders());
        if (!HTTPMethod.GET.equals(HTTPMethod.valueOf(requestBuilder.getMethod()))) {
            final String body = request.getBody();
            if (body != null) {
                requestBuilder.setEntity(new StringEntity(request.getBody(), request.getContentType()));
            }
        }

        final HttpContext httpContext = setAuthorizations(requestConfigurationBuilder,
                request.getAuthorization(), request.getProxy(), urlHost, urlPort, urlProtocol,
                httpClientBuilder);

        requestBuilder.setConfig(requestConfigurationBuilder.build());
        httpClientBuilder.setDefaultRequestConfig(requestConfigurationBuilder.build());

        final HttpUriRequest httpRequest = requestBuilder.build();
        httpClient = httpClientBuilder.build();
        final CloseableHttpResponse httpResponse = httpClient.execute(httpRequest, httpContext);
        LOGGER.fine("Request sent.");
        setOutputs(httpResponse, request);
    } finally {
        try {
            if (httpClient != null) {
                httpClient.close();
            }
        } catch (final IOException ex) {
            logException(ex);
        }
    }
}

From source file:org.daybreak.coccinella.webmagic.CrawlerDownloader.java

@Override
public Page download(Request request, Task task) {
    Site site = null;/*w w  w .ja v a 2  s  .c  o m*/
    if (task != null) {
        site = task.getSite();
    }
    Set<Integer> acceptStatCode;
    String charset = null;
    Map<String, String> headers = null;
    if (site != null) {
        acceptStatCode = site.getAcceptStatCode();
        charset = site.getCharset();
        headers = site.getHeaders();
    } else {
        acceptStatCode = Sets.newHashSet(200);
    }
    logger.info("downloading page " + request.getUrl());
    RequestBuilder requestBuilder = null;
    if (request instanceof CrawlerRequest) {
        CrawlerRequest crawlerRequest = (CrawlerRequest) request;
        if (StringUtils.isNotBlank(crawlerRequest.getCrawler().getReferer())) {
            site.addHeader(HttpHeaders.REFERER, crawlerRequest.getCrawler().getReferer());
        }
        if (crawlerRequest.getCrawler().getMethod() == HttpMethod.GET) {
            requestBuilder = RequestBuilder.get().setUri(request.getUrl());
        } else if (crawlerRequest.getCrawler().getMethod() == HttpMethod.POST) {
            try {
                requestBuilder = RequestBuilder.post().setUri(crawlerRequest.getUrl())
                        .setEntity(crawlerRequest.createEntity());
            } catch (UnsupportedEncodingException ex) {
                logger.warn("The encoding is not supported: " + crawlerRequest.getCrawler().getEncode());
                return null;
            }
        }
    }

    if (requestBuilder == null) {
        return null;
    }

    if (headers != null) {
        for (Map.Entry<String, String> headerEntry : headers.entrySet()) {
            requestBuilder.addHeader(headerEntry.getKey(), headerEntry.getValue());
        }
    }
    RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
            .setConnectionRequestTimeout(site.getTimeOut()).setSocketTimeout(site.getTimeOut())
            .setConnectTimeout(site.getTimeOut()).setCookieSpec(CookieSpecs.BEST_MATCH);
    if (site != null && site.getHttpProxy() != null) {
        requestConfigBuilder.setProxy(site.getHttpProxy());
    }
    requestBuilder.setConfig(requestConfigBuilder.build());
    CloseableHttpResponse httpResponse = null;
    try {
        httpResponse = getHttpClient(site).execute(requestBuilder.build());
        int statusCode = httpResponse.getStatusLine().getStatusCode();
        if (acceptStatCode.contains(statusCode)) {
            // ??
            Header[] resHeaders = httpResponse.getAllHeaders();
            for (int i = 0; i < resHeaders.length; i++) {
                if (resHeaders[i].getName().equals("Set-Cookie")) {
                    String cookie = resHeaders[i].getValue();
                    String cookieName = cookie.split("=")[0];
                    String cookieValue = cookie.split("=")[1].split(";")[0];
                    site.addCookie(cookieName, cookieValue);
                }
            }

            //charset
            if (charset == null) {
                String value = httpResponse.getEntity().getContentType().getValue();
                charset = UrlUtils.getCharset(value);
            }
            return handleResponse(request, charset, httpResponse, task);
        } else {
            logger.warn("code error " + statusCode + "\t" + request.getUrl());
            return null;
        }
    } catch (IOException e) {
        logger.warn("download page " + request.getUrl() + " error", e);
        if (site.getCycleRetryTimes() > 0) {
            return addToCycleRetry(request, site);
        }
        return null;
    } finally {
        try {
            if (httpResponse != null) {
                //ensure the connection is released back to pool
                EntityUtils.consume(httpResponse.getEntity());
            }
        } catch (IOException e) {
            logger.warn("close response fail", e);
        }
    }
}

From source file:com.wudaosoft.net.httpclient.Request.java

/**
 * // w w  w  . j  a v  a  2 s. com
 * @param workerBuilder
 * @param responseHandler
 * @return
 * @throws Exception
 */
public <T> T doRequest(WorkerBuilder workerBuilder, ResponseHandler<T> responseHandler) throws Exception {

    String method = workerBuilder.getMethod();
    String url = workerBuilder.getUrl();

    Args.notNull(workerBuilder, "WorkerBuilder");
    Args.notEmpty(method, "WorkerBuilder.getMethod()");
    Args.notEmpty(url, "WorkerBuilder.getUrl()");
    Args.notNull(responseHandler, "responseHandler");

    //      if(!workerBuilder.isAnyHost()) {
    if (!isFullUrl(url)) {
        //         notFullUrl(url);
        Args.notEmpty(hostConfig.getHostUrl(), "HostConfig.getHostUrl()");
        url = hostConfig.getHostUrl() + url;
    }

    Charset charset = hostConfig.getCharset() == null ? Consts.UTF_8 : hostConfig.getCharset();
    String stringBody = workerBuilder.getStringBody();
    File fileBody = workerBuilder.getFileBody();
    InputStream streamBody = workerBuilder.getStreamBody();
    Map<String, String> params = workerBuilder.getParameters();

    String contentType = null;

    if (responseHandler instanceof JsonResponseHandler) {
        contentType = MediaType.APPLICATION_JSON_VALUE;
    } else if (responseHandler instanceof SAXSourceResponseHandler
            || responseHandler instanceof XmlResponseHandler) {
        contentType = MediaType.APPLICATION_XML_VALUE;
    } else if (responseHandler instanceof FileResponseHandler || responseHandler instanceof ImageResponseHandler
            || responseHandler instanceof OutputStreamResponseHandler) {
        contentType = MediaType.ALL_VALUE;
    } else if (responseHandler instanceof NoResultResponseHandler) {
        contentType = ((NoResultResponseHandler) responseHandler).getContentType().getMimeType();
    } else {
        contentType = MediaType.TEXT_PLAIN_VALUE;
    }

    RequestBuilder requestBuilder = RequestBuilder.create(method).setCharset(charset).setUri(url);

    if (stringBody != null) {

        StringEntity reqEntity = new StringEntity(stringBody, charset);
        reqEntity.setContentType(contentType + ";charset=" + charset.name());
        requestBuilder.setEntity(reqEntity);

    } else if (fileBody != null || streamBody != null) {

        String filename = workerBuilder.getFilename();

        MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create().setLaxMode();

        if (fileBody != null) {
            Args.check(fileBody.isFile(), "fileBody must be a file");
            Args.check(fileBody.canRead(), "fileBody must be readable");

            if (filename == null && streamBody == null)
                filename = fileBody.getName();

            FileBody bin = new FileBody(fileBody, ContentType.APPLICATION_OCTET_STREAM,
                    streamBody != null ? fileBody.getName() : filename);
            reqEntity.addPart(workerBuilder.getFileFieldName(), bin);
        }

        Args.notEmpty(filename, "filename");

        if (streamBody != null)
            reqEntity.addBinaryBody(workerBuilder.getFileFieldName(), streamBody,
                    ContentType.APPLICATION_OCTET_STREAM, filename);

        buildParameters(reqEntity, params, charset);

        requestBuilder.setEntity(reqEntity.build());
    }

    if (fileBody == null && streamBody == null) {
        buildParameters(requestBuilder, params);
    }

    if (workerBuilder.getReadTimeout() > -1) {

        requestBuilder.setConfig(RequestConfig.copy(this.hostConfig.getRequestConfig())
                .setSocketTimeout(workerBuilder.getReadTimeout()).build());
    }

    HttpUriRequest httpRequest = ParameterRequestBuilder.build(requestBuilder);

    setAcceptHeader(httpRequest, contentType);

    if (workerBuilder.isAjax())
        setAjaxHeader(httpRequest);

    HttpClientContext context = workerBuilder.getContext();
    if (context == null)
        context = defaultHttpContext;

    T result = getHttpClient().execute(httpRequest, responseHandler, context);

    if (log.isDebugEnabled()) {
        log.debug(String.format("Send data to path:[%s]\"%s\". result: %s", method, url, result));
    }

    return result;
}