例子:JsonObject response = postJsonData(url, gson.toJson(applyInfo));//applyInfo 一个java对象
/**
* 发送 post 请求
*
* @param url 地址
* @return {@link JsonObject}
*/
public static JsonObject postJsonData(String url, String jsonStrData) {
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
HttpPost post = new HttpPost(url);
JsonObject jsonObject = null;
try {
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
HttpEntity entity = new StringEntity(jsonStrData, "UTF-8");
post.setEntity(entity);
post.setHeader("Content-type", "application/json");
HttpResponse resp = closeableHttpClient.execute(post);
jsonObject = convertResponseBytes2JsonObj(resp);
} catch (IOException e) {
e.printStackTrace();
}
return jsonObject;
}
/**
* 发送 get 请求
*
* @param url 地址
* @return {@link JsonObject}
*/
public static JsonObject getJsonResponse(String url) {
JsonObject jsonObject = new JsonObject();
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
HttpGet get = new HttpGet(url);
CloseableHttpClient closeableHttpClient = null;
try {
closeableHttpClient = httpClientBuilder.build();
HttpResponse resp = closeableHttpClient.execute(get);
jsonObject = convertResponseBytes2JsonObj(resp);
} catch (IOException e) {
e.printStackTrace();
if (null != closeableHttpClient) {
try {
closeableHttpClient.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return jsonObject;
}
/**
* Header 为 application/json POST 请求数据
*
* @param resp
* @return {@link JsonObject}
*/
private static JsonObject convertResponseBytes2JsonObj(HttpResponse resp) {
JsonObject jsonObject = null;
try {
InputStream respIs = resp.getEntity().getContent();
byte[] respBytes = IOUtils.toByteArray(respIs);
String result = new String(respBytes, Charset.forName("UTF-8"));
if (null == result || result.length() == 0) {
LOG.error("请求无响应");
} else {
if (result.startsWith("{") && result.endsWith("}")) {
jsonObject = (JsonObject) jsonParser.parse(result);
} else {
LOG.error("请求不能转成JSON对象");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}
附:
public static String post(String url, Map<String, String> params) {
DefaultHttpClient httpclient = new DefaultHttpClient();
String body = null;
log.info("create httppost:" + url);
HttpPost post = postForm(url, params);
body = invoke(httpclient, post);
httpclient.getConnectionManager().shutdown();
return body;
}
public static String get(String url) {
DefaultHttpClient httpclient = new DefaultHttpClient();
String body = null;
log.info("create httppost:" + url);
HttpGet get = new HttpGet(url);
body = invoke(httpclient, get);
httpclient.getConnectionManager().shutdown();
return body;
}
private static String invoke(DefaultHttpClient httpclient, HttpUriRequest httpost) {
HttpResponse response = sendRequest(httpclient, httpost);
String body = paseResponse(response);
return body;
}
@SuppressWarnings("unused")
private static String paseResponse(HttpResponse response) {
HttpEntity entity = response.getEntity();
log.info("response status: " + response.getStatusLine());
String charset = EntityUtils.getContentCharSet(entity);
String body = null;
try {
body = EntityUtils.toString(entity);
log.info(body);
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return body;
}
private static HttpResponse sendRequest(DefaultHttpClient httpclient, HttpUriRequest httpost) {
HttpResponse response = null;
try {
response = httpclient.execute(httpost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
private static HttpPost postForm(String url, Map<String, String> params) {
HttpPost httpost = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
Set<String> keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key)));
}
try {
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return httpost;
}
get请求
String access_token = client.get(url);
post请求
String response = client.post(url, param);//Map<String, String> param