UnirestUtils工具类,封装常用的get和post请求,并支持代理设置
pom.xml新增如下依赖
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.7.02</version>
</dependency>
UnirestUtils.java
package com.geostar.gfstack.monitorcenter.client.util;
import kong.unirest.GetRequest;
import kong.unirest.HttpRequestWithBody;
import kong.unirest.HttpResponse;
import kong.unirest.Unirest;
import lombok.Builder;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
* UnirestUtils工具类,封装常用的get和post请求,并支持代理设置
*/
@Builder
public class UnirestUtils {
/**
* 默认编码格式
*/
private static final String DEFAULT_ENCODING = "UTF-8";
/**
* 代理是否开启
*/
private boolean openProxy;
/**
* 代理主机
*/
private String proxyHost;
/**
* 代理端口
*/
private int proxyPort;
/**
* URL前缀
*/
private String urlPrefix;
/**
* 默认请求头
*/
private Map<String, String> defaultHeader;
/**
* json请求头,Content-Type: application/json
*/
public static Map<String, String> header_JSON;
/**
* form请求头,Content-Type: application/x-www-form-urlencoded
*/
public static Map<String, String> header_FORM;
static {
header_JSON = new HashMap<String, String>() {{
put("Content-Type", "application/json");
}};
header_FORM = new HashMap<String, String>() {{
put("Content-Type", "application/x-www-form-urlencoded");
}};
}
/**
* 设置代理
*
* @param host 代理主机
* @param port 代理端口
*/
public UnirestUtils proxy(String host, Integer port) {
proxyHost = host;
proxyPort = port;
openProxy = true;
return this;
}
/**
* 设置代理
*
* @param host 代理主机
* @param port 代理端口
* @param open 代理是否开启
*/
public UnirestUtils proxy(String host, Integer port, boolean open) {
proxyHost = host;
proxyPort = port;
openProxy = open;
return this;
}
/**
* get请求
*
* @param url 请求地址
* @return
*/
public String get(String url) {
return get(url, null, defaultHeader);
}
/**
* get请求
*
* @param url 请求地址
* @param params 请求参数
* @return
*/
public String get(String url, Map<String, Object> params) {
return get(url, params, defaultHeader);
}
/**
* get请求
*
* @param url 请求地址
* @param params 请求参数
* @param headers 请求头
* @return
*/
public String get(String url, Map<String, Object> params, Map<String, String> headers) {
url = processUrl(url);
GetRequest getRequest = Unirest.get(url);
if (openProxy) {
getRequest.proxy(proxyHost, proxyPort);
}
if (params != null && params.size() > 0) {
for (String s : params.keySet()) {
getRequest.queryString(s, params.get(s));
}
}
if (headers != null && headers.size() > 0) {
for (String s : headers.keySet()) {
getRequest.header(s, headers.get(s));
}
}
HttpResponse<String> response = getRequest.asString();
return response.getBody();
}
/**
* post请求
*
* @param url 请求地址
* @return
*/
public String post(String url) {
return post(url, null, defaultHeader);
}
/**
* post请求
*
* @param url 请求地址
* @param payload 请求body
* @return
*/
public String post(String url, String payload) {
return post(url, payload, defaultHeader);
}
/**
* post请求
*
* @param url 请求地址
* @param headers 请求头
* @return
*/
public String post(String url, Map<String, String> headers) {
return post(url, null, headers);
}
/**
* post请求
*
* @param url 请求地址
* @param payload 请求body
* @param headers 请求头
* @return
*/
public String post(String url, String payload, Map<String, String> headers) {
url = processUrl(url);
HttpRequestWithBody httpRequestWithBody = Unirest.post(url);
if (openProxy) {
httpRequestWithBody.proxy(proxyHost, proxyPort);
}
if (headers != null && headers.size() > 0) {
for (String s : headers.keySet()) {
httpRequestWithBody.header(s, headers.get(s));
}
}
if (payload == null) {
return httpRequestWithBody.asString().getBody();
} else {
return httpRequestWithBody.body(payload).asString().getBody();
}
}
/**
* 处理url
*
* @param url 原始url,如urlPrefix不为空,则会在url前补上urlPrefix
* @return
*/
private String processUrl(String url) {
if (urlPrefix != null) {
url = urlPrefix + url;
}
return url;
}
/**
* uri编码,默认采用UTF-8编码
*
* @param text 编码前的文本
* @return
*/
public static String encodeURIComponent(String text) {
return encodeURIComponent(text, DEFAULT_ENCODING);
}
/**
* uri编码
*
* @param text 编码前的文本
* @param encoding 编码格式
* @return
*/
public static String encodeURIComponent(String text, String encoding) {
try {
return URLEncoder.encode(text, encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return text;
}
}
/**
* uri解码,默认采用UTF-8解码
*
* @param text 解码前的文本
* @return
*/
public static String decodeURIComponent(String text) {
return decodeURIComponent(text, DEFAULT_ENCODING);
}
/**
* uri解码
*
* @param text 解码前的文本
* @param encoding 编码格式
* @return
*/
public static String decodeURIComponent(String text, String encoding) {
try {
return URLDecoder.decode(text, encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return text;
}
}
/**
* 测试main函数
*
* @param args
*/
public static void main(String[] args) {
UnirestUtils utils = UnirestUtils.builder().proxyHost("localhost").proxyPort(8888).openProxy(true).build();
System.out.println(utils.get("http://www.baidu.com"));
}
}

浙公网安备 33010602011771号