JAVA - clase de herramienta http

Utilice OkHttpClient para crear una clase de herramienta

OkHttpUtils.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;
    }
}

Hay llamadas para publicar y recibir llamadas, crear una clase de herramienta de llamadas

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;
    }

}

Supongo que te gusta

Origin blog.csdn.net/DGH2430284817/article/details/129068098
Recomendado
Clasificación