package com.xiaocaimi.open.common.util;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.nio.charset.Charset;
@Slf4j
public class HttpUtil {
public static String get(String url) {
String body = null;
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
log.info("create httppost:" + url);
HttpGet get = new HttpGet(url);
get.addHeader("Accept-Charset","utf-8");
HttpResponse response = sendRequest(httpClient, get);
body = parseResponse(response);
} catch (IOException e) {
log.error("send post request failed: {}", e.getMessage());
}
return body;
}
private static HttpResponse sendRequest(CloseableHttpClient httpclient, HttpUriRequest httpost)
throws ClientProtocolException, IOException {
HttpResponse response = null;
response = httpclient.execute(httpost);
return response;
}
private static String parseResponse(HttpResponse response) {
log.info("get response from http server..");
HttpEntity entity = response.getEntity();
log.info("response status: " + response.getStatusLine());
Charset charset = ContentType.getOrDefault(entity).getCharset();
if (charset != null) {
log.info(charset.name());
}
String body = null;
try {
body = EntityUtils.toString(entity, "utf-8");
log.info("body " + body);
} catch (IOException e) {
log.warn("{}: cannot parse the entity", e.getMessage());
}
return body;
}
public static String doPost(String url, JSONObject json){
// 创建httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
CloseableHttpResponse response = null;
try {
//StringEntity reqEntity = new StringEntity(params,"utf-8");
StringEntity entity = new StringEntity(json.toString(),"utf-8");
//entity.setContentEncoding("UTF-8");
entity.setContentType("application/json"); // 发送json数据需要设置contentType
post.setEntity(entity);
response = httpClient.execute(post);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
// 返回json格式
return EntityUtils.toString(response.getEntity());
}
} catch (Exception e) {
log.error("通讯异常,异常信息:[{}]", e);
}
finally {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (response != null){
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
使用Java调用Http接口(post,get)
最新推荐文章于 2024-06-26 10:13:29 发布