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

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

Introduction

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

Prototype

public static RequestBuilder post() 

Source Link

Usage

From source file:jp.classmethod.aws.brian.BrianClient.java

@Override
public CreateTriggerResult createTrigger(BrianTrigger trigger)
        throws BrianClientException, BrianServerException {
    logger.debug("create trigger: {}/{}", trigger.getGroup(), trigger.getName());
    HttpResponse httpResponse = null;//from w  ww.j a va 2 s  . c o m
    try {
        BrianTriggerRequest request = trigger.toBrianTriggerRequest();
        String requestBody = mapper.writeValueAsString(request);
        logger.trace("create: requestBody = {}", requestBody);
        HttpEntity entity = new StringEntity(requestBody);

        String path = String.format("/triggers/%s", trigger.getGroup());
        URI uri = new URI(scheme, null, hostname, port, path, null, null);
        HttpUriRequest httpRequest = RequestBuilder.post().setUri(uri).setEntity(entity).build();
        httpResponse = httpClientExecute(httpRequest);
        int statusCode = httpResponse.getStatusLine().getStatusCode();
        logger.debug("statusCode: {}", statusCode);
        JsonNode tree = mapper.readTree(httpResponse.getEntity().getContent());
        if (statusCode == HttpStatus.SC_CREATED) {
            String nextFireTime = tree.path("content").path("nextFireTime").asText();
            logger.info("trigger created: nextFireTime = {}", nextFireTime);
            return new CreateTriggerResult(Instant.parse(nextFireTime));
        } else if (statusCode >= 500) {
            throw new BrianServerException(String.format("status = %d; message = %s",
                    new Object[] { statusCode, tree.get("message").textValue() }));
        } else if (statusCode == HttpStatus.SC_CONFLICT) {
            throw new BrianClientException(String.format("triggerKey (%s/%s) is already exist",
                    new Object[] { trigger.getGroup(), trigger.getName() }));
        } else if (statusCode >= 400) {
            throw new BrianClientException(String.format("status = %d; message = %s",
                    new Object[] { statusCode, tree.get("message").textValue() }));
        } else {
            throw new Error(String.format("status = %d; message = %s",
                    new Object[] { statusCode, tree.get("message").textValue() }));
        }
    } catch (JsonProcessingException e) {
        throw new BrianServerException(e);
    } catch (URISyntaxException e) {
        throw new IllegalStateException(e);
    } catch (IOException e) {
        throw new BrianServerException(e);
    } catch (IllegalStateException e) {
        throw new Error(e);
    } finally {
        if (httpResponse != null) {
            EntityUtils.consumeQuietly(httpResponse.getEntity());
        }
    }
}

From source file:gobblin.writer.http.SalesforceRestWriter.java

@Override
public void flush() {
    try {//from w w w.j  a  v  a  2  s  . c om
        if (isRetry()) {
            //flushing failed and it should be retried.
            super.writeImpl(null);
            return;
        }

        if (batchRecords.isPresent() && batchRecords.get().size() > 0) {
            getLog().info(
                    "Flusing remaining subrequest of batch. # of subrequests: " + batchRecords.get().size());
            curRequest = Optional.of(
                    newRequest(RequestBuilder.post().setUri(combineUrl(getCurServerHost(), batchResourcePath)),
                            newPayloadForBatch()));
            super.writeImpl(null);
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

From source file:net.ymate.framework.commons.HttpClientHelper.java

public IHttpResponse post(String url, ContentType contentType, byte[] content, Header[] headers)
        throws Exception {
    CloseableHttpClient _httpClient = __doBuildHttpClient();
    try {//from   w ww . j  a  va2s  . c  o  m
        RequestBuilder _reqBuilder = RequestBuilder.post().setUri(url).setEntity(EntityBuilder.create()
                .setContentEncoding(contentType == null || contentType.getCharset() == null ? DEFAULT_CHARSET
                        : contentType.getCharset().name())
                .setContentType(contentType).setBinary(content).build());
        if (headers != null && headers.length > 0) {
            for (Header _header : headers) {
                _reqBuilder.addHeader(_header);
            }
        }
        return _httpClient.execute(_reqBuilder.build(), new ResponseHandler<IHttpResponse>() {

            public IHttpResponse handleResponse(HttpResponse response) throws IOException {
                return new IHttpResponse.NEW(response);
            }

        });
    } finally {
        _httpClient.close();
    }
}

From source file:com.vmware.gemfire.tools.pulse.tests.junit.ClusterSelectedRegionServiceTest.java

/**
*
* Tests that response is for same region
*
* Test method for {@link com.vmware.gemfire.tools.pulse.internal.service.ClusterSelectedRegionService#execute(javax.servlet.http.HttpServletRequest)}.
*
*//*from  w  ww . j a  v a  2  s  .c  om*/
@Test
public void testResponseNonExistentRegion() {
    System.out.println(
            "ClusterSelectedRegionServiceTest ::  ------TESTCASE BEGIN : NON-EXISTENT REGION CHECK FOR CLUSTER REGIONS------");
    if (httpclient != null) {
        try {
            HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
                    .addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_2_VALUE).build();
            CloseableHttpResponse response = httpclient.execute(pulseupdate);
            try {
                HttpEntity entity = response.getEntity();

                System.out.println("ClusterSelectedRegionServiceTest :: HTTP request status : "
                        + response.getStatusLine());

                BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                String sz = null;
                while ((sz = respReader.readLine()) != null) {
                    pw.print(sz);
                }
                String jsonResp = sw.getBuffer().toString();
                System.out.println("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
                EntityUtils.consume(entity);

                JSONObject jsonObj = new JSONObject(jsonResp);
                JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegion");
                Assert.assertNotNull(
                        "ClusterSelectedRegionServiceTest :: Server returned null response for ClusterSelectedRegion",
                        clusterSelectedRegionObj);
                JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegion");
                Assert.assertNotNull(
                        "ClusterSelectedRegionServiceTest :: Server returned null response for selectedRegion",
                        jsonObjRegion);
                Assert.assertTrue(
                        "ClusterSelectedRegionServiceTest :: Server did not return error on non-existent region",
                        jsonObjRegion.has("errorOnRegion"));
            } finally {
                response.close();
            }
        } catch (Exception failed) {
            logException(failed);
            Assert.fail("Exception ! ");
        }
    } else {
        Assert.fail("ClusterSelectedRegionServiceTest :: No Http connection was established.");
    }
    System.out.println(
            "ClusterSelectedRegionServiceTest ::  ------TESTCASE END : NON-EXISTENT REGION CHECK FOR CLUSTER REGIONS------\n");
}

From source file:org.jmonkey.external.bintray.BintrayApiClient.java

public boolean createReadme(Asset asset, String readmeData) throws IOException {

    // @link https://bintray.com/docs/api/#url_package_readme

    try (CloseableHttpClient httpClient = this.createAuthenticatedClient()) {

        Map<String, Object> jsonData = new HashMap<>();
        Map<String, String> bintrayData = new HashMap<>();

        bintrayData.put("syntax", "markdown");
        bintrayData.put("content", readmeData);

        jsonData.put("bintray", bintrayData);

        String json = JmeResourceWebsite.getObjectMapper().writeValueAsString(jsonData);

        StringEntity requestEntity = new StringEntity(json, ContentType.APPLICATION_JSON);

        HttpUriRequest request = RequestBuilder
                .post().setUri("https://api.bintray.com/packages/" + config.getSubject() + "/"
                        + config.getRepo() + "/" + asset.getPackageName() + "/readme")
                .setEntity(requestEntity).build();

        try (CloseableHttpResponse httpResponse = httpClient.execute(request)) {

            if (httpResponse.getStatusLine().getStatusCode() >= 400) {
                return false;
            }// w  w  w .j a va 2  s  .  co  m

            return true;
        }

    }

}

From source file:edu.mit.scratch.Scratch.java

public static ScratchSession register(final String username, final String password, final String gender,
        final int birthMonth, final String birthYear, final String country, final String email)
        throws ScratchUserException {
    // Long if statement to verify all fields are valid
    if ((username.length() < 3) || (username.length() > 20) || (password.length() < 6) || (gender.length() < 2)
            || (birthMonth < 1) || (birthMonth > 12) || (birthYear.length() != 4) || (country.length() == 0)
            || (email.length() < 5)) {
        throw new ScratchUserException(); // TDL: Specify reason for failure
    } else {//from  w  ww.  j a v  a 2s .c o  m
        try {
            final RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT)
                    .build();

            final CookieStore cookieStore = new BasicCookieStore();
            final BasicClientCookie lang = new BasicClientCookie("scratchlanguage", "en");
            lang.setDomain(".scratch.mit.edu");
            lang.setPath("/");
            cookieStore.addCookie(lang);

            CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig)
                    .setUserAgent(Scratch.USER_AGENT).setDefaultCookieStore(cookieStore).build();
            CloseableHttpResponse resp;

            final HttpUriRequest csrf = RequestBuilder.get().setUri("https://scratch.mit.edu/csrf_token/")
                    .addHeader("Accept", "*/*").addHeader("Referer", "https://scratch.mit.edu")
                    .addHeader("X-Requested-With", "XMLHttpRequest").build();
            try {
                resp = httpClient.execute(csrf);
            } catch (final IOException e) {
                e.printStackTrace();
                throw new ScratchUserException();
            }
            try {
                resp.close();
            } catch (final IOException e) {
                throw new ScratchUserException();
            }

            String csrfToken = null;
            for (final Cookie c : cookieStore.getCookies())
                if (c.getName().equals("scratchcsrftoken"))
                    csrfToken = c.getValue();

            /*
             * try {
             * username = URLEncoder.encode(username, "UTF-8");
             * password = URLEncoder.encode(password, "UTF-8");
             * birthMonth = Integer.parseInt(URLEncoder.encode("" +
             * birthMonth, "UTF-8"));
             * birthYear = URLEncoder.encode(birthYear, "UTF-8");
             * gender = URLEncoder.encode(gender, "UTF-8");
             * country = URLEncoder.encode(country, "UTF-8");
             * email = URLEncoder.encode(email, "UTF-8");
             * } catch (UnsupportedEncodingException e1) {
             * e1.printStackTrace();
             * }
             */

            final BasicClientCookie csrfCookie = new BasicClientCookie("scratchcsrftoken", csrfToken);
            csrfCookie.setDomain(".scratch.mit.edu");
            csrfCookie.setPath("/");
            cookieStore.addCookie(csrfCookie);
            final BasicClientCookie debug = new BasicClientCookie("DEBUG", "true");
            debug.setDomain(".scratch.mit.edu");
            debug.setPath("/");
            cookieStore.addCookie(debug);

            httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig)
                    .setUserAgent(Scratch.USER_AGENT).setDefaultCookieStore(cookieStore).build();

            /*
             * final String data = "username=" + username + "&password=" +
             * password + "&birth_month=" + birthMonth + "&birth_year=" +
             * birthYear + "&gender=" + gender + "&country=" + country +
             * "&email=" + email +
             * "&is_robot=false&should_generate_admin_ticket=false&usernames_and_messages=%3Ctable+class%3D'banhistory'%3E%0A++++%3Cthead%3E%0A++++++++%3Ctr%3E%0A++++++++++++%3Ctd%3EAccount%3C%2Ftd%3E%0A++++++++++++%3Ctd%3EEmail%3C%2Ftd%3E%0A++++++++++++%3Ctd%3EReason%3C%2Ftd%3E%0A++++++++++++%3Ctd%3EDate%3C%2Ftd%3E%0A++++++++%3C%2Ftr%3E%0A++++%3C%2Fthead%3E%0A++++%0A%3C%2Ftable%3E%0A&csrfmiddlewaretoken="
             * + csrfToken;
             * System.out.println(data);
             */

            final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addTextBody("birth_month", birthMonth + "", ContentType.TEXT_PLAIN);
            builder.addTextBody("birth_year", birthYear, ContentType.TEXT_PLAIN);
            builder.addTextBody("country", country, ContentType.TEXT_PLAIN);
            builder.addTextBody("csrfmiddlewaretoken", csrfToken, ContentType.TEXT_PLAIN);
            builder.addTextBody("email", email, ContentType.TEXT_PLAIN);
            builder.addTextBody("gender", gender, ContentType.TEXT_PLAIN);
            builder.addTextBody("is_robot", "false", ContentType.TEXT_PLAIN);
            builder.addTextBody("password", password, ContentType.TEXT_PLAIN);
            builder.addTextBody("should_generate_admin_ticket", "false", ContentType.TEXT_PLAIN);
            builder.addTextBody("username", username, ContentType.TEXT_PLAIN);
            builder.addTextBody("usernames_and_messages",
                    "<table class=\"banhistory\"> <thead> <tr> <td>Account</td> <td>Email</td> <td>Reason</td> <td>Date</td> </tr> </thead> </table>",
                    ContentType.TEXT_PLAIN);

            final HttpUriRequest createAccount = RequestBuilder.post()
                    .setUri("https://scratch.mit.edu/accounts/register_new_user/")
                    .addHeader("Accept", "application/json, text/javascript, */*; q=0.01")
                    .addHeader("Referer", "https://scratch.mit.edu/accounts/standalone-registration/")
                    .addHeader("Origin", "https://scratch.mit.edu")
                    .addHeader("Accept-Encoding", "gzip, deflate").addHeader("DNT", "1")
                    .addHeader("Accept-Language", "en-US,en;q=0.8")
                    .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
                    .addHeader("X-Requested-With", "XMLHttpRequest").addHeader("X-CSRFToken", csrfToken)
                    .addHeader("X-DevTools-Emulate-Network-Conditions-Client-Id",
                            "54255D9A-9771-4CAC-9052-50C8AB7469E0")
                    .setEntity(builder.build()).build();
            resp = httpClient.execute(createAccount);
            System.out.println("REGISTER:" + resp.getStatusLine());
            final BufferedReader rd = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));

            final StringBuffer result = new StringBuffer();
            String line = "";
            while ((line = rd.readLine()) != null)
                result.append(line);
            System.out.println("exact:" + result.toString() + "\n" + resp.getStatusLine().getReasonPhrase()
                    + "\n" + resp.getStatusLine());
            if (resp.getStatusLine().getStatusCode() != 200)
                throw new ScratchUserException();
            resp.close();
        } catch (final Exception e) {
            e.printStackTrace();
            throw new ScratchUserException();
        }
        try {
            return Scratch.createSession(username, password);
        } catch (final Exception e) {
            e.printStackTrace();
            throw new ScratchUserException();
        }
    }
}

From source file:net.ymate.framework.commons.HttpClientHelper.java

public IHttpResponse post(String url, ContentType contentType, InputStream content, Header[] headers,
        final String defaultResponseCharset) throws Exception {
    CloseableHttpClient _httpClient = __doBuildHttpClient();
    try {//from   ww  w.j  a v  a 2  s.c  om
        RequestBuilder _reqBuilder = RequestBuilder.post().setUri(url).setEntity(EntityBuilder.create()
                .setContentEncoding(contentType == null || contentType.getCharset() == null ? DEFAULT_CHARSET
                        : contentType.getCharset().name())
                .setContentType(contentType).setStream(content).build());
        if (headers != null && headers.length > 0) {
            for (Header _header : headers) {
                _reqBuilder.addHeader(_header);
            }
        }
        return _httpClient.execute(_reqBuilder.build(), new ResponseHandler<IHttpResponse>() {

            public IHttpResponse handleResponse(HttpResponse response) throws IOException {
                if (StringUtils.isNotBlank(defaultResponseCharset)) {
                    return new IHttpResponse.NEW(response, defaultResponseCharset);
                }
                return new IHttpResponse.NEW(response);
            }

        });
    } finally {
        _httpClient.close();
    }
}

From source file:com.vmware.gemfire.tools.pulse.tests.junit.MemberGatewayHubServiceTest.java

/**
*
* Tests that response is for same region
*
* Test method for {@link com.vmware.gemfire.tools.pulse.internal.service.MemberGatewayHubService#execute(javax.servlet.http.HttpServletRequest)}.
*
*/// ww  w  .java 2 s  . c  o m
@Test
public void testResponseGatewaySenderProperties() {
    System.out.println(
            "MemberGatewayHubServiceTest ::  ------TESTCASE BEGIN : GATEWAY SENDER PROPERTIES IN RESPONSE CHECK FOR MEMBER GATEWAY HUB SERVICE------");
    if (httpclient != null) {
        try {
            HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
                    .addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_5_VALUE).build();
            CloseableHttpResponse response = httpclient.execute(pulseupdate);
            try {
                HttpEntity entity = response.getEntity();

                System.out.println(
                        "MemberGatewayHubServiceTest :: HTTP request status : " + response.getStatusLine());

                BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                String sz = null;
                while ((sz = respReader.readLine()) != null) {
                    pw.print(sz);
                }
                String jsonResp = sw.getBuffer().toString();
                System.out.println("MemberGatewayHubServiceTest :: JSON response returned : " + jsonResp);
                EntityUtils.consume(entity);

                JSONObject jsonObj = new JSONObject(jsonResp);
                JSONObject memberGatewayHubObj = jsonObj.getJSONObject("MemberGatewayHub");
                Assert.assertNotNull(
                        "MemberGatewayHubServiceTest :: Server returned null response for MemberGatewayHub",
                        memberGatewayHubObj);
                Assert.assertTrue(
                        "MemberGatewayHubServiceTest :: Server did not return 'isGatewaySender' for member",
                        memberGatewayHubObj.has("isGatewaySender"));
                Boolean boolIsGatewaySender = memberGatewayHubObj.getBoolean("isGatewaySender");

                Assert.assertTrue(
                        "MemberGatewayHubServiceTest :: Server did not return 'gatewaySenders' for member",
                        memberGatewayHubObj.has("gatewaySenders"));
                JSONArray arrGatewaySender = memberGatewayHubObj.getJSONArray("gatewaySenders");
                Assert.assertNotNull(
                        "MemberGatewayHubServiceTest :: Server returned null response for 'gatewaySenders'",
                        arrGatewaySender);
                Assert.assertTrue(
                        "MemberGatewayHubServiceTest :: Server returned mis-matched values for 'isGatewaySender' and gateway senders array count",
                        ((boolIsGatewaySender && (arrGatewaySender.length() > 0))
                                || ((!boolIsGatewaySender) && (arrGatewaySender.length() == 0))));

                Assert.assertTrue(
                        "MemberGatewayHubServiceTest :: Server did not return 'remoteDSId' for member",
                        ((JSONObject) arrGatewaySender.get(0)).has("remoteDSId"));
                Assert.assertTrue(
                        "MemberGatewayHubServiceTest :: Server did not return 'eventsExceedingAlertThreshold' for member",
                        ((JSONObject) arrGatewaySender.get(0)).has("eventsExceedingAlertThreshold"));
            } finally {
                response.close();
            }
        } catch (Exception failed) {
            logException(failed);
            Assert.fail("Exception ! ");
        }
    } else {
        Assert.fail("MemberGatewayHubServiceTest :: No Http connection was established.");
    }
    System.out.println(
            "MemberGatewayHubServiceTest ::  ------TESTCASE END : GATEWAY SENDER PROPERTIES IN RESPONSE CHECK FOR MEMBER GATEWAY HUB SERVICE ------\n");
}

From source file:com.vmware.gemfire.tools.pulse.tests.junit.ClusterSelectedRegionsMemberServiceTest.java

/**
*
* Tests that response is for same region
*
*
*//*from   w  w  w  .j  av a  2s . c  om*/
@Test
public void testResponseNonExistentRegion() {
    System.out.println(
            "ClusterSelectedRegionsMemberServiceTest ::  ------TESTCASE BEGIN : NON-EXISTENT REGION CHECK FOR CLUSTER REGION MEMBERS------");
    if (httpclient != null) {
        try {
            System.out.println("Test for non-existent region : /Rubbish");
            HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
                    .addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_4_VALUE).build();
            CloseableHttpResponse response = httpclient.execute(pulseupdate);
            try {
                HttpEntity entity = response.getEntity();

                System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : "
                        + response.getStatusLine());

                BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                String sz = null;
                while ((sz = respReader.readLine()) != null) {
                    pw.print(sz);
                }
                String jsonResp = sw.getBuffer().toString();
                System.out.println(
                        "ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
                EntityUtils.consume(entity);

                JSONObject jsonObj = new JSONObject(jsonResp);
                JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegionsMember");
                Assert.assertNotNull(
                        "ClusterSelectedRegionsMemberServiceTest :: Server returned null for ClusterSelectedRegionsMember",
                        clusterSelectedRegionObj);
                JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegionsMembers");
                Assert.assertNotNull(
                        "ClusterSelectedRegionsMemberServiceTest :: Server returned null for selectedRegionsMembers",
                        jsonObjRegion);
                Assert.assertTrue(
                        "ClusterSelectedRegionsMemberServiceTest :: Server did not return error on non-existent region",
                        jsonObjRegion.has("errorOnRegion"));
            } finally {
                response.close();
            }
        } catch (Exception failed) {
            logException(failed);
            Assert.fail("Exception ! ");
        }
    } else {
        Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
    }
    System.out.println(
            "ClusterSelectedRegionsMemberServiceTest ::  ------TESTCASE END : NON-EXISTENT REGION CHECK FOR CLUSTER REGION MEMBERS------");
}

From source file:com.baidu.rigel.biplatform.ac.util.HttpRequest.java

/**
 * ?URL??POST/*from w  ww  .  j  a  v  a 2  s  .  c  om*/
 * 
 * @param client httpclient
 * @param url ??URL
 * @param param ?? name1=value1&name2=value2 ?
 * @return URL ??
 */
public static String sendPost(HttpClient client, String url, Map<String, String> params) {
    if (client == null) {
        throw new IllegalArgumentException("client is null");
    }

    if (params == null) {
        params = new HashMap<String, String>(1);
    }
    String requestUrl = processPlaceHolder(url, params);

    String cookie = params.remove(COOKIE_PARAM_NAME);
    if (requestUrl.contains("?")) {
        String[] urls = requestUrl.split("?");
        requestUrl = urls[0];
        String[] urlParams = urls[1].split("&");
        for (String param : urlParams) {
            String[] paramSplit = param.split("=");
            params.put(paramSplit[0], paramSplit[1]);
        }
    }

    List<NameValuePair> nameValues = new ArrayList<NameValuePair>();
    params.forEach((k, v) -> {
        NameValuePair nameValuePair = new BasicNameValuePair(k, v);
        nameValues.add(nameValuePair);
    });

    String prefix = "", suffix = "";
    String[] addresses = new String[] { requestUrl };
    if (requestUrl.contains("[") && requestUrl.contains("]")) {
        addresses = requestUrl.substring(requestUrl.indexOf("[") + 1, requestUrl.indexOf("]")).split(" ");
        prefix = requestUrl.substring(0, requestUrl.indexOf("["));
        suffix = requestUrl.substring(requestUrl.indexOf("]") + 1);
    }
    LOGGER.info("start to send post:" + requestUrl);
    long current = System.currentTimeMillis();
    for (String address : addresses) {
        String postUrl = prefix + address + suffix;
        LOGGER.info("post url is : " + postUrl);
        try {
            HttpUriRequest request = RequestBuilder.post().setUri(postUrl) // .addParameters(nameValues.toArray(new NameValuePair[0]))
                    .setEntity(new UrlEncodedFormEntity(nameValues, "utf-8")).build();
            if (StringUtils.isNotBlank(cookie)) {
                // ?cookie
                request.addHeader(new BasicHeader(COOKIE_PARAM_NAME, cookie));
            }
            //                client.
            HttpResponse response = client.execute(request);
            String content = processHttpResponse(client, response, params, false);
            StringBuilder sb = new StringBuilder();
            sb.append("end send post :").append(postUrl).append(" params:").append(nameValues).append(" cost:")
                    .append(System.currentTimeMillis() - current);
            LOGGER.info(sb.toString());
            return content;
        } catch (Exception e) {
            LOGGER.warn("send post error " + requestUrl + ",retry next one", e);
        }
    }
    throw new RuntimeException("send post failed[" + requestUrl + "]. params :" + nameValues);

}