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

cn.authing.sdk.java.util.HttpUtils Maven / Gradle / Ivy

There is a newer version: 3.1.10
Show newest version
package cn.authing.sdk.java.util;

import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;

import java.util.Map;
import java.util.Set;

/**
 * @author luojielin
 */
@SuppressWarnings("all")
public class HttpUtils {
    
    private static final Log log = LogFactory.get("[Authing]");
    
    public static String request(String url, String method, Object body, Map headers, int timeout) {
        long start = System.currentTimeMillis();
        HttpResponse httpResponse = null;
        switch (method) {
            case "GET":
                url = buildUrlWithQueryParams(url, JsonUtils.deserialize(JsonUtils.serialize(body), Map.class));
                log.info("请求 url: {}", url);
                httpResponse = HttpUtil
                        .createRequest(Method.valueOf(method), url)
                        .setReadTimeout(timeout)
                        .setConnectionTimeout(timeout)
                        .headerMap(headers, true)
                        .execute();
                break;
            case "POST":
                String bodyString = JsonUtils.serialize(body);
                log.info("请求 url:{}, body: {}", url, bodyString);
                httpResponse = HttpUtil
                        .createRequest(Method.valueOf(method), url)
                        .setReadTimeout(timeout)
                        .body(bodyString)
                        .setConnectionTimeout(timeout)
                        .headerMap(headers, true)
                        .execute();
                break;

            case "UrlencodedPOST":
                String urlencodedBodyString = buildQueryParams(JsonUtils.deserialize(JsonUtils.serialize(body), Map.class));
                log.info("请求 url:{}, body: {}", url, urlencodedBodyString);
                httpResponse = HttpUtil
                        .createRequest(Method.valueOf("POST"), url)
                        .setReadTimeout(timeout)
                        .body(urlencodedBodyString)
                        .setConnectionTimeout(timeout)
                        .headerMap(headers, true)
                        .execute();
                break;
            default:
                throw new IllegalArgumentException();
        }
        if (httpResponse.isOk()) {
            String response = httpResponse.body();
            log.info("响应:{}, 耗时:{} ms", response, (System.currentTimeMillis() - start));
            return response;
        } else {
            throw new RuntimeException(httpResponse.body());
        }
    }
    
    public static String buildUrlWithQueryParams(String url, Map params) {
        StringBuilder sb = new StringBuilder(url);
        if(params != null && !params.isEmpty()){
            sb.append("?");
            sb.append(buildQueryParams(params));
            sb.deleteCharAt(sb.length()-1);
        }
        return sb.toString();
    }

    public static String buildQueryParams(Map params) {
        StringBuilder sb = new StringBuilder();
        if (params != null && !params.isEmpty()) {
            Set> entries = params.entrySet();
            for (Map.Entry entry : entries) {
                if (entry.getValue() != null) {
                    sb.append(entry.getKey()).append("=").append(entry.getValue().toString()).append("&");
                }
            }
        }
        return sb.toString();
    }
    
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy