All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.bluesword.util.network.HttpClientUtil Maven / Gradle / Ivy

The newest version!
package top.bluesword.util.network;

import org.apache.commons.codec.CharEncoding;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import top.bluesword.util.exception.SwordRuntimeException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * http请求工具
 *
 * @author 李林峰
 */
public class HttpClientUtil {

    private HttpClientUtil(){}

    /**
     * 发送json格式的post请求
     *
     * @param url  访问地址
     * @param json 请求参数(json字符串)
     * @return 接收的参数
     */
    public static String sendPostJson(String url, String json) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost httpPost = new HttpPost(url);
            StringEntity entity = new StringEntity(json, CharEncoding.UTF_8);
            httpPost.setEntity(entity);
            httpPost.setHeader("Content-Encoding", CharEncoding.UTF_8);
            httpPost.setHeader("content-type", "application/json");
            CloseableHttpResponse response = httpClient.execute(httpPost);
            return EntityUtils.toString(response.getEntity());
        } catch (IOException e) {
            throw new SwordRuntimeException("发送json格式的post请求失败");
        }
    }

    /**
     * 发送普通格式参数的post请求
     * @param url 请求地址
     * @param paramMap 参数
     * @param headers 请求头
     * @return 返回参数
     */
    public static String sendPostParam(String url, Map paramMap, Header[] headers) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(toParamMap(paramMap), CharEncoding.UTF_8));
            httpPost.setHeaders(headers);
            CloseableHttpResponse response = httpClient.execute(httpPost);
            return EntityUtils.toString(response.getEntity());
        } catch (IOException e) {
            throw new SwordRuntimeException("发送普通格式参数的post请求失败");
        }
    }

    public static List toParamMap(Map paramMap) {
        List params = new ArrayList<>();
        if (paramMap != null) {
            for (Map.Entry entry : paramMap.entrySet()) {
                params.add(new BasicNameValuePair(entry.getKey(), paramMap.get(entry.getValue())));
            }
        }
        return params;
    }

    /**
     * 发送完整信息的get请求
     * @param url 请求地址
     * @param paramMap 参数
     * @param headersMap 请求头
     * @return 返回参数
     */
    public static String sendGet(String url, Map paramMap, Map headersMap) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            String param = URLEncodedUtils.format(toParamMap(paramMap), CharEncoding.UTF_8);
            if (StringUtils.isNotBlank(param)) param = "?" + param;
            HttpGet httpGet = new HttpGet(url + param);
            if (headersMap != null) {
                for (Map.Entry entry : headersMap.entrySet()) {
                    httpGet.setHeader(entry.getKey(), entry.getValue());
                }
            }
            CloseableHttpResponse response = httpClient.execute(httpGet);
            return EntityUtils.toString(response.getEntity());
        } catch (IOException e) {
            throw new SwordRuntimeException("发送get请求失败");
        }
    }

    /**
     * 发送无参数get请求
     * @param url 请求地址
     * @return 返回参数
     */
    public static String sendGet(String url) {
        return sendGet(url, null, null);
    }

    /**
     * 发送携带参数,没有请求头的get请求
     * @param url 请求地址
     * @param paramMap 请求参数
     * @return 返回参数
     */
    public static String sendGet(String url, Map paramMap) {
        return sendGet(url, paramMap, null);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy