Используйте OkHttpClient для создания класса инструмента.
ОкHttpUtils.java
import java.util.concurrent.TimeUnit;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
public class OkHttpUtils {
//读超时时间
private final static int READ_TIMEOUT = 10;
//连接超时时间
private final static int CONNECT_TIMEOUT = 10;
//写超时时间
private final static int WRITE_TIMEOUT = 10;
private static volatile OkHttpClient okHttpClient;
private OkHttpUtils(){
okhttp3.OkHttpClient.Builder clientBuilder = new okhttp3.OkHttpClient.Builder();
//读取超时
clientBuilder.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS);
//连接超时
clientBuilder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS);
//写入超时
clientBuilder.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS);
//自定义连接池,最大线程数,活跃线程,超时时间
clientBuilder.connectionPool(new ConnectionPool(32,5,TimeUnit.MINUTES));
okHttpClient = clientBuilder.build();
}
public static OkHttpClient getInstance(){
//双重if单例
if (null == okHttpClient){
synchronized (OkHttpUtils.class){
if (okHttpClient == null){
new OkHttpUtils();
return okHttpClient;
}
}
}
return okHttpClient;
}
}
Есть почтовые звонки и прием звонков, создайте класс инструментов звонков.
HttpRequestHuaUtils.java
/**
* http调用封装类
* @author hua
*/
@Slf4j
public class HttpRequestHuaUtils {
public static String httpPost(Map<String,String> headers, String url, String jsonObject) throws IOException {
log.info("请求URL:{}",url);
log.info("请求头信息:{}", JsonUtils.toJson(headers));
log.info("请求参数:{}",jsonObject);
StringBuffer requestUrl = new StringBuffer(url);
OkHttpClient client = OkHttpUtils.getInstance();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, jsonObject);
Request.Builder builder = new Request.Builder();
if(Objects.nonNull(headers) && !headers.isEmpty()){
for (Map.Entry<String, String> item: headers.entrySet()) {
builder.addHeader(item.getKey(),item.getValue());
}
}
Request request = builder
.url(requestUrl.toString())
.post(RequestBody.create(jsonObject, mediaType))
.build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
final String result = response.body().string();
log.info("请求返回结果:{}",result);
return result;
}else{
log.error("请求失败:{}",response.message());
return null;
}
}
public static String httpGet(Map<String,String> headers, String url) throws IOException {
log.info("请求URL:{}",url);
log.info("请求头信息:{}", JsonUtils.toJson(headers));
StringBuffer requestUrl = new StringBuffer(url);
OkHttpClient client = OkHttpUtils.getInstance();
Request.Builder builder = new Request.Builder();
if(!Objects.isNull(headers) && !headers.isEmpty()){
for (Map.Entry<String, String> item: headers.entrySet()) {
builder.addHeader(item.getKey(),item.getValue());
}
}
Request request = builder
.url(requestUrl.toString())
.build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
final String result = response.body().string();
log.info("请求返回结果:{}",result);
return result;
}else{
log.error("请求失败,原因:{}",response.message());
return null;
}
}
public static String httpGet(Map<String,String> headers, String url,String jsonObject) throws IOException {
log.info("请求URL:{}",url);
log.info("请求头信息:{}", JsonUtils.toJson(headers));
log.info("请求参数:{}",jsonObject);
String result = null;
HttpGetWithEntity getWithEntity = new HttpGetWithEntity(url);
if (!headers.isEmpty()) {
for (Map.Entry<String,String> entry : headers.entrySet()) {
getWithEntity.addHeader(entry.getKey(),entry.getValue());
}
}
HttpEntity httpEntity = new StringEntity(jsonObject, ContentType.APPLICATION_JSON);
getWithEntity.setEntity(httpEntity);
try (CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = httpClient.execute(getWithEntity)) {
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
HttpEntity responseEntity = response.getEntity();
result = EntityUtils.toString(responseEntity,"UTF-8");
log.info("请求返回结果:{}",result);
} else {
log.error("请求失败,原因:{}",response.getStatusLine().getStatusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}