类org.apache.http.client.methods.RequestBuilder源码实例Demo

下面列出了怎么用org.apache.http.client.methods.RequestBuilder的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: netcdf-java   文件: HTTPMethod.java
protected void setcontent(RequestBuilder rb) {
  switch (this.methodkind) {
    case Put:
      if (this.content != null)
        rb.setEntity(this.content);
      break;
    case Post:
      if (this.content != null)
        rb.setEntity(this.content);
      break;
    case Head:
    case Get:
    case Options:
    default:
      break;
  }
  this.content = null; // do not reuse
}
 
源代码2 项目: zongtui-webcrawler   文件: HttpClientDownloader.java
protected RequestBuilder selectRequestMethod(Request request) {
    String method = request.getMethod();
    if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) {
        //default get
        return RequestBuilder.get();
    } else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) {
        RequestBuilder requestBuilder = RequestBuilder.post();
        NameValuePair[] nameValuePair = (NameValuePair[]) request.getExtra("nameValuePair");
        if (nameValuePair != null && nameValuePair.length > 0) {
            requestBuilder.addParameters(nameValuePair);
        }
        return requestBuilder;
    } else if (method.equalsIgnoreCase(HttpConstant.Method.HEAD)) {
        return RequestBuilder.head();
    } else if (method.equalsIgnoreCase(HttpConstant.Method.PUT)) {
        return RequestBuilder.put();
    } else if (method.equalsIgnoreCase(HttpConstant.Method.DELETE)) {
        return RequestBuilder.delete();
    } else if (method.equalsIgnoreCase(HttpConstant.Method.TRACE)) {
        return RequestBuilder.trace();
    }
    throw new IllegalArgumentException("Illegal HTTP Method " + method);
}
 
源代码3 项目: raptor   文件: HttpclientSpringMvcBenchmark.java
@Benchmark
public void test(Blackhole bh) {
    String body = "{\"name\":\"ppdai\"}";
    String url = "http://localhost:" + port + "/raptor/com.ppdai.framework.raptor.proto.Simple/sayHello";
    HttpUriRequest request = RequestBuilder.post(url)
            .addHeader("connection", "Keep-Alive")
            .setEntity(EntityBuilder.create().setText(body).setContentType(ContentType.APPLICATION_JSON).build())
            .build();
    String responseBody;
    try (CloseableHttpResponse response = httpClient.execute(request)) {
        ByteArrayOutputStream bos = new ByteArrayOutputStream(100);
        response.getEntity().writeTo(bos);
        responseBody = new String(bos.toByteArray(), StandardCharsets.UTF_8);
    } catch (IOException e) {
        throw new RuntimeException("error", e);
    }
    bh.consume(responseBody);
}
 
源代码4 项目: validatar   文件: JSON.java
/**
 * Creates a HttpUriRequest based on the metadata configuration.
 * @param metadata The metadata configuration.
 * @return A configured request object.
 */
private HttpUriRequest createRequest(Map<String, String> metadata) {
    String verb = metadata.getOrDefault(VERB_KEY, DEFAULT_VERB);
    String url = metadata.get(URL_KEY);
    if (url == null || url.isEmpty()) {
        throw new IllegalArgumentException("The " + URL_KEY + " must be provided and contain a valid url.");
    }
    RequestBuilder builder;
    if (GET.equals(verb)) {
        builder = RequestBuilder.get(url);
    } else if (POST.equals(verb)) {
        builder = RequestBuilder.post(url);
        String body = metadata.getOrDefault(BODY_KEY, EMPTY_BODY);
        builder.setEntity(new StringEntity(body, Charset.defaultCharset()));
    } else {
        throw new UnsupportedOperationException("This HTTP method is not currently supported: " + verb);
    }
    // Everything else is assumed to be a header
    metadata.entrySet().stream().filter(entry -> !KNOWN_KEYS.contains(entry.getKey()))
                                .forEach(entry -> builder.addHeader(entry.getKey(), entry.getValue()));
    return builder.build();
}
 
源代码5 项目: fc-java-sdk   文件: AsyncInternalClient.java
protected <Res> void asyncSend(HttpRequest request, AbstractResponseConsumer<Res> consumer, FutureCallback<Res> callback,
                               String contentType, HttpMethod method, boolean httpInvoke)
        throws ClientException {
    try{
        // try refresh credentials if CredentialProvider set
        config.refreshCredentials();

        // Add all needed headers
        if (!httpInvoke
                || !ANONYMOUS.equals(((HttpInvokeFunctionRequest) request).getAuthType())) {
            FcUtil.signRequest(config, request, contentType, method, httpInvoke);
        }

        // Construct HttpRequest
        PrepareUrl prepareUrl = FcUtil.prepareUrl(request.getPath(), request.getQueryParams(), this.config);
        RequestBuilder requestBuilder = RequestBuilder.create(method.name())
                .setUri(prepareUrl.getUrl());
        copyToRequest(request, requestBuilder);
        HttpUriRequest httpRequest = requestBuilder.build();

        HttpHost httpHost = URIUtils.extractHost(httpRequest.getURI());
        httpClient.execute(new FcRequestProducer(httpHost, httpRequest), consumer, callback);
    } catch (Exception e) {
        throw new ClientException(e);
    }
}
 
源代码6 项目: vespa   文件: DefaultZtsClient.java
@Override
public AwsTemporaryCredentials getAwsTemporaryCredentials(AthenzDomain athenzDomain, AwsRole awsRole, Duration duration, String externalId) {
    URI uri = ztsUrl.resolve(
            String.format("domain/%s/role/%s/creds", athenzDomain.getName(), awsRole.encodedName()));
    RequestBuilder requestBuilder = RequestBuilder.get(uri);

    // Add optional durationSeconds and externalId parameters
    Optional.ofNullable(duration).ifPresent(d -> requestBuilder.addParameter("durationSeconds", Long.toString(duration.getSeconds())));
    Optional.ofNullable(externalId).ifPresent(s -> requestBuilder.addParameter("externalId", s));

    HttpUriRequest request = requestBuilder.build();
    return execute(request, response -> {
        AwsTemporaryCredentialsResponseEntity entity = readEntity(response, AwsTemporaryCredentialsResponseEntity.class);
        return entity.credentials();
    });
}
 
源代码7 项目: zerocode   文件: BasicHttpClient.java
/**
 * This is how framework makes the KeyValue pair when "application/x-www-form-urlencoded" headers
 * is passed in the request.  In case you want to build or prepare the requests differently,
 * you can override this method via @UseHttpClient(YourCustomHttpClient.class).
 *
 * @param httpUrl
 * @param methodName
 * @param reqBodyAsString
 * @return
 * @throws IOException
 */
public RequestBuilder createFormUrlEncodedRequestBuilder(String httpUrl, String methodName, String reqBodyAsString) throws IOException {
    RequestBuilder requestBuilder = RequestBuilder
            .create(methodName)
            .setUri(httpUrl);
    if (reqBodyAsString != null) {
        Map<String, Object> reqBodyMap = HelperJsonUtils.readObjectAsMap(reqBodyAsString);
        List<NameValuePair> reqBody = new ArrayList<>();
         for(String key : reqBodyMap.keySet()) {
             reqBody.add(new BasicNameValuePair(key, reqBodyMap.get(key).toString()));
         }
         HttpEntity httpEntity = new UrlEncodedFormEntity(reqBody);
         requestBuilder.setEntity(httpEntity);
        requestBuilder.setHeader(CONTENT_TYPE, APPLICATION_FORM_URL_ENCODED);
    }
    return requestBuilder;
}
 
源代码8 项目: nomad-java-sdk   文件: NomadApiClient.java
InputStream executeRawStream(
        final RequestBuilder requestBuilder,
        @Nullable final RequestOptions requestOptions
)
        throws IOException, NomadException {

    final HttpUriRequest request = buildRequest(requestBuilder, requestOptions);
    CloseableHttpResponse response = httpClient.execute(request);
    try {
        if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            throw ErrorResponseException.signaledInStatus(request, response);
        }
        return response.getEntity().getContent();
    } catch (Throwable e) {
        response.close();
        throw e;
    }
}
 
源代码9 项目: incubator-gobblin   文件: SalesforceRestWriter.java
@Override
public void flush() {
  try {
    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);
  }
}
 
源代码10 项目: nomad-java-sdk   文件: ApiBase.java
private <T> ServerQueryResponse<T> executeServerQueryRaw(
        @Nullable final QueryOptions<T> options,
        @Nullable final String wait,
        final ValueExtractor<T> valueExtractor,
        RequestBuilder requestBuilder
) throws IOException, NomadException {
    if (options != null) {
        if (options.getIndex() != null)
            requestBuilder.addParameter("index", options.getIndex().toString());
        if (wait != null)
            requestBuilder.addParameter("wait", wait);
        if (options.isAllowStale())
            requestBuilder.addParameter("stale", null);
    }
    return apiClient.execute(requestBuilder, new ServerQueryResponseAdapter<>(valueExtractor), options);
}
 
public static void fhirResourceDeletePurge(String resourceName)
    throws IOException, URISyntaxException {
  // String resourceName =
  //    String.format(
  //        FHIR_NAME, "project-id", "region-id", "dataset-id", "store-id", "fhir-id");

  // Initialize the client, which will be used to interact with the service.
  CloudHealthcare client = createClient();

  HttpClient httpClient = HttpClients.createDefault();
  String uri = String.format("%sv1/%s/$purge", client.getRootUrl(), resourceName);
  URIBuilder uriBuilder = new URIBuilder(uri).setParameter("access_token", getAccessToken());

  HttpUriRequest request =
      RequestBuilder.delete()
          .setUri(uriBuilder.build())
          .addHeader("Content-Type", "application/fhir+json")
          .addHeader("Accept-Charset", "utf-8")
          .addHeader("Accept", "application/fhir+json; charset=utf-8")
          .build();

  // Execute the request and process the results.
  HttpResponse response = httpClient.execute(request);
  HttpEntity responseEntity = response.getEntity();
  if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
    String errorMessage =
        String.format(
            "Exception purging FHIR resource: %s\n", response.getStatusLine().toString());
    System.err.print(errorMessage);
    responseEntity.writeTo(System.err);
    throw new RuntimeException(errorMessage);
  }
  System.out.println("FHIR resource history purged.");
  responseEntity.writeTo(System.out);
}
 
源代码12 项目: netcdf-java   文件: HTTPMethod.java
protected void setheaders(RequestBuilder rb, Map<String, String> headers) {
  // Add any defined headers
  if (headers.size() > 0) {
    for (HashMap.Entry<String, String> entry : headers.entrySet()) {
      rb.addHeader(entry.getKey(), entry.getValue());
    }
  }
}
 
源代码13 项目: rundeck-http-plugin   文件: OAuthClient.java
/**
 * As in doTokenValidate(), validate that the token is correct. In this case we
 * can specify that the token has _just_ been retrieved so that we don't try to
 * retrieve it again if validate fails.
 *
 * @param newToken True if this is a brand new token and we shouldn't try to get
 *                 a new on 401.a
 * @throws HttpResponseException
 * @throws IOException
 * @throws OAuthException
 */
void doTokenValidate(Boolean newToken) throws HttpResponseException, IOException, OAuthException {
    if(this.accessToken == null) {
        this.doTokenRequest();
    } else {
        if (this.validateEndpoint != null) {
            log.debug("Validating access token at " + this.validateEndpoint);

            HttpUriRequest request = RequestBuilder.create("GET")
                    .setUri(this.validateEndpoint)
                    .setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + this.accessToken)
                    .setHeader(HttpHeaders.ACCEPT, JSON_CONTENT_TYPE)
                    .build();

            HttpResponse response = this.httpClient.execute(request);

            if (response.getStatusLine().getStatusCode() == STATUS_SUCCESS) {
                JsonNode data = jsonParser.readTree(EntityUtils.toString(response.getEntity()));
                String clientId = data.get("client").asText();

                if (!this.clientId.equals(clientId)) {
                    throw new OAuthException("Token received for a client other than us.");
                }
            } else if (response.getStatusLine().getStatusCode() == STATUS_AUTHORIZATION_REQUIRED) {
                this.accessToken = null;

                if (newToken) {
                    throw new OAuthException("Newly acquired token is still not valid.");
                } else {
                    doTokenRequest();
                }
            } else {
                throw new HttpResponseException(response.getStatusLine().getStatusCode(), buildError(response));
            }
        } else {
            log.debug("No validate endpoint exists, skipping validation.");
        }
    }
}
 
源代码14 项目: incubator-gobblin   文件: HttpWriter.java
@Override
public Optional<HttpUriRequest> onNewRecord(D record) {
  try {
    HttpUriRequest uriRequest = RequestBuilder.post()
        .addHeader(HttpHeaders.CONTENT_TYPE, ContentType.TEXT_PLAIN.getMimeType())
        .setUri(getCurServerHost())
        .setEntity(new StringEntity(record.toString(), ContentType.TEXT_PLAIN.toString()))
        .build();
    return Optional.of(uriRequest);
  } catch (Exception e) {
    throw new RuntimeException(e);
  }
}
 
源代码15 项目: vespa   文件: DefaultZtsClient.java
private ZToken getRoleToken(AthenzDomain domain, String roleName) {
    URI uri = ztsUrl.resolve(String.format("domain/%s/token", domain.getName()));
    RequestBuilder requestBuilder = RequestBuilder.get(uri)
            .addHeader("Content-Type", "application/json");
    if (roleName != null) {
        requestBuilder.addParameter("role", roleName);
    }
    HttpUriRequest request = requestBuilder.build();
    return execute(request, response -> {
        RoleTokenResponseEntity roleTokenResponseEntity = readEntity(response, RoleTokenResponseEntity.class);
        return roleTokenResponseEntity.token;
    });
}
 
源代码16 项目: rundeck-http-plugin   文件: OAuthClient.java
/**
 * Retrieve an access token with our client credentials.
 *
 * @throws IOException         When the HTTP request fails for some reason.
 * @throws HttpResponseException When a non 200 or 401 status code is returned.
 */
void doTokenRequest() throws HttpResponseException, OAuthException, IOException {
    this.accessToken = null;

    log.debug("Requesting access token from " + this.tokenEndpoint);

    List<NameValuePair> params = new ArrayList<>();
    params.add(new BasicNameValuePair(FIELD_GRANT_TYPE, this.grantType.name().toLowerCase()));

    HttpUriRequest request = RequestBuilder.create("POST")
            .setUri(this.tokenEndpoint)
            .setHeader(HttpHeaders.AUTHORIZATION, "Basic " + com.dtolabs.rundeck.core.utils.Base64.encode(this.clientId + ":" + this.clientSecret))
            .setHeader(HttpHeaders.ACCEPT, JSON_CONTENT_TYPE)
            .setHeader(HttpHeaders.CONTENT_TYPE, FORM_CONTENT_TYPE)
            .setEntity(new UrlEncodedFormEntity(params)).build();

    HttpResponse response = this.httpClient.execute(request);

    if(response.getStatusLine().getStatusCode() == STATUS_SUCCESS) {
        JsonNode data = jsonParser.readTree(EntityUtils.toString(response.getEntity()));
        this.accessToken = data.get(FIELD_ACCESS_TOKEN).asText();
    } else {
        throw new HttpResponseException(response.getStatusLine().getStatusCode(), buildError(response));
    }

    this.doTokenValidate(true);
}
 
源代码17 项目: vespa   文件: DefaultZtsClient.java
@Override
public Identity getServiceIdentity(AthenzIdentity identity, String keyId, Pkcs10Csr csr) {
    URI uri = ztsUrl.resolve(String.format("instance/%s/%s/refresh", identity.getDomainName(), identity.getName()));
    HttpUriRequest request = RequestBuilder.post()
            .setUri(uri)
            .setEntity(toJsonStringEntity(new IdentityRefreshRequestEntity(csr, keyId)))
            .build();
    return execute(request, response -> {
        IdentityResponseEntity entity = readEntity(response, IdentityResponseEntity.class);
        return new Identity(entity.certificate(), entity.caCertificateBundle());
    });
}
 
源代码18 项目: raptor   文件: ServiceExceptionTest.java
@Test
public void testException() throws Exception {
    String url = "http://localhost:" + serverProperties.getPort() + "/more/get2?name=error";
    HttpClient httpClient = HttpClientBuilder.create().build();
    HttpUriRequest get = RequestBuilder.get(url)
            .addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString())
            .build();

    HttpResponse response = httpClient.execute(get);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    response.getEntity().writeTo(bos);
    String result = new String(bos.toByteArray(), StandardCharsets.UTF_8);
    System.out.println(result);
    Assert.assertTrue(result.contains("error!"));
}
 
源代码19 项目: tutorials   文件: HttpClientHeadersLiveTest.java
@Test
public final void givenConfigOnClient_whenRequestHasCustomContentType_thenCorrect() throws ClientProtocolException, IOException {
    final Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");
    final List<Header> headers = Lists.newArrayList(header);
    client = HttpClients.custom().setDefaultHeaders(headers).build();
    final HttpUriRequest request = RequestBuilder.get().setUri(SAMPLE_URL).build();
    response = client.execute(request);
}
 
源代码20 项目: nomad-java-sdk   文件: ApiBase.java
private RequestBuilder prepareWrite(
        final RequestBuilder builder,
        final URIBuilder uri,
        @Nullable final WriteOptions options
) {
    String region = apiClient.getConfig().getRegion();
    String namespace = apiClient.getConfig().getNamespace();
    String secretId = apiClient.getConfig().getAuthToken();

    if (options != null) {
        if (options.getRegion() != null)
            region = options.getRegion();
        if (options.getNamespace() != null)
            namespace = options.getNamespace();
        if (options.getSecretId() != null)
            secretId = options.getSecretId();
    }

    if (region != null)
        uri.addParameter("region", region);
    if (namespace != null)
        uri.addParameter("namespace", namespace);
    if (secretId != null)
        builder.addHeader("X-Nomad-Token", secretId);

    return builder.setUri(build(uri));
}
 
/**
 * Add payload to request. By default, payload is sent as application/json
 */
protected int addPayload(RequestBuilder builder, String payload) {
  if (payload == null || payload.length() == 0) {
    return 0;
  }


  builder.setHeader(HttpHeaders.CONTENT_TYPE, contentType.getMimeType());
  builder.setEntity(new StringEntity(payload, contentType));
  return payload.length();
}
 
源代码22 项目: zerocode-hello-world   文件: OAuth2HttpClient.java
@Override
public RequestBuilder handleHeaders(Map<String, Object> headers, RequestBuilder requestBuilder) {
	String authorization = (String) headers.get("Authorization");
	if (authorization != null && authorization.equals(ACCESS_TOKEN_REPLACEMENT_VALUE)) {
		headers.put("Authorization", oauth2.getAccessToken());
		LOGGER.info("Token injected into header.");
	}
	return super.handleHeaders(headers, requestBuilder);
}
 
源代码23 项目: tutorial   文件: UploadFile.java
public static void main(String[] argvs) throws Exception{
    File f1 = new File("src/test/resources/1.jpg");
    File f2 = new File("src/test/resources/2.jpg");

    try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

        HttpEntity data = MultipartEntityBuilder.create()
                .setMode(HttpMultipartMode.RFC6532)
                .addBinaryBody("photo", f1, ContentType.DEFAULT_BINARY, f1.getName())
                .addBinaryBody("photo", f2, ContentType.DEFAULT_BINARY, f2.getName())
                .addTextBody("fileId", "110", ContentType.DEFAULT_BINARY)
                .build();

        HttpUriRequest request = RequestBuilder
                .post("http://127.0.0.1:8080/tvseries/10/photos")
                .setEntity(data)
                .build();

        ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
            @Override
            public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
                int status = response.getStatusLine().getStatusCode();
                System.out.println(status);
                if (status == 200) {
                    HttpEntity entity = response.getEntity();
                    return entity != null ? EntityUtils.toString(entity) : null;
                } else {
                    throw new ClientProtocolException("Unexpected response status: " + status);
                }
            }
        };
        String responseBody = httpClient.execute(request, responseHandler);
        System.out.println(responseBody);
    }
}
 
protected <T> T postRequest(String resourceUrl, RequestDto requestDto, Class<T> responseClass) throws EngineClientException {
  ByteArrayEntity serializedRequest = serializeRequest(requestDto);
  HttpUriRequest httpRequest = RequestBuilder.post(resourceUrl)
    .addHeader(HEADER_USER_AGENT)
    .addHeader(HEADER_CONTENT_TYPE_JSON)
    .setEntity(serializedRequest)
    .build();
  
  return executeRequest(httpRequest, responseClass);
}
 
源代码25 项目: keycloak   文件: HttpMethod.java
protected void preExecute(RequestBuilder builder) {
    for (Map.Entry<String, List<String>> param : params.entrySet()) {
        for (String value : param.getValue()) {
            builder.addParameter(param.getKey(), value);
        }
    }
}
 
源代码26 项目: syndesis   文件: OAuthRefreshTokenProcessor.java
HttpUriRequest createHttpRequest() {
    final RequestBuilder builder = RequestBuilder.post(authorizationEndpoint);

    if (authorizeUsingParameters) {
        builder.addParameter("client_id", state.getClientId())
            .addParameter("client_secret", state.getClientSecret());
    }

    builder.addParameter("refresh_token", state.getRefreshToken())
        .addParameter("grant_type", "refresh_token");

    return builder.build();
}
 
源代码27 项目: bullet-core   文件: HTTPMetricEventPublisher.java
/**
 * Exposed for testing.
 *
 * @param body The body to POST with.
 * @return A {@link HttpUriRequest} that is a POST.
 */
HttpUriRequest getPost(String body) {
    return RequestBuilder.post()
            .setUri(url)
            .setHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON.toString())
            .setEntity(new StringEntity(body, ContentType.DEFAULT_TEXT)).build();
}
 
源代码28 项目: springboot-security-wechat   文件: SnsAPI.java
/**
 * 通过code换取网页授权access_token
 *
 * @param appid  appid
 * @param secret secret
 * @param code   code
 * @return SnsToken
 */
public static SnsToken oauth2AccessToken(String appid, String secret, String code) {
    HttpUriRequest httpUriRequest = RequestBuilder.post()
            .setUri(BASE_URI + "/sns/oauth2/access_token")
            .addParameter("appid", appid)
            .addParameter("secret", secret)
            .addParameter("code", code)
            .addParameter("grant_type", "authorization_code")
            .build();
    return LocalHttpClient.executeJsonResult(httpUriRequest, SnsToken.class);
}
 
源代码29 项目: springboot-security-wechat   文件: SnsAPI.java
/**
 * 通过code换取网页授权access_token (第三方平台开发)
 *
 * @param appid                  appid
 * @param code                   code
 * @param component_appid        服务开发方的appid
 * @param component_access_token 服务开发方的access_token
 * @return SnsToken
 */
public static SnsToken oauth2ComponentAccessToken(String appid, String code, String component_appid, String component_access_token) {
    HttpUriRequest httpUriRequest = RequestBuilder.post()
            .setUri(BASE_URI + "/sns/oauth2/component/access_token")
            .addParameter("appid", appid)
            .addParameter("code", code)
            .addParameter("grant_type", "authorization_code")
            .addParameter("component_appid", component_appid)
            .addParameter("component_access_token", component_access_token)
            .build();
    return LocalHttpClient.executeJsonResult(httpUriRequest, SnsToken.class);
}
 
源代码30 项目: springboot-security-wechat   文件: SnsAPI.java
/**
 * 刷新access_token
 *
 * @param appid         appid
 * @param refresh_token refresh_token
 * @return SnsToken
 */
public static SnsToken oauth2RefreshToken(String appid, String refresh_token) {
    HttpUriRequest httpUriRequest = RequestBuilder.post()
            .setUri(BASE_URI + "/sns/oauth2/refresh_token")
            .addParameter("appid", appid)
            .addParameter("refresh_token", refresh_token)
            .addParameter("grant_type", "refresh_token")
            .build();
    return LocalHttpClient.executeJsonResult(httpUriRequest, SnsToken.class);
}