import okhttp3.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class HttpUtil {
private static OkHttpClient client=new OkHttpClient().newBuilder()
.connectTimeout(120, TimeUnit.SECONDS)
.readTimeout(120, TimeUnit.SECONDS)
.writeTimeout(120, TimeUnit.SECONDS)
.build();
public static void setClient(OkHttpClient client) {
HttpUtil.client = client;
}
private static void addHeaders(Request.Builder builder, Map<String,String> headers) {
if(builder!=null && headers!=null && headers.size()>0) {
for(String key:headers.keySet()) {
builder.addHeader(key, headers.get(key));
}
}
}
private static String mapToQueryStr(Map<String,Object> params) {
StringBuilder sb=new StringBuilder();
if(params != null && params.size()>0) {
for(String key: params.keySet()){
Object value=params.get(key);
sb.append("&").append(key).append("=").append(value!=null?String.valueOf(value):"");
}
}
return sb.toString();
}
private static String appendUrl(String url,String params) {
if(url != null && url.length()>0 && params != null && params.length()>0) {
if(!url.contains("?")) {
url=url+"?"+params.substring(1);
}else {
url=url+params;
}
}
return url;
}
private static FormBody.Builder mapToFormBody(Map<String,Object> params){
FormBody.Builder formBody = new FormBody.Builder();
if(params != null && params.size()>0) {
for(String key: params.keySet()){
Object value=params.get(key);
formBody.add(key,value!=null?String.valueOf(value):"");
}
}
return formBody;
}
public static String doGet(String url,Map<String,Object> params,Map<String,String> headers) {
String result=null;
if(url != null && url.length()>0) {
url=appendUrl(url,mapToQueryStr(params));
Request.Builder builder = new Request.Builder().url(url);
addHeaders(builder,headers);
Request request = builder.build();
try(Response response = client.newCall(request).execute()){
if(response.isSuccessful()) {
result = response.body().string();
}
}catch(IOException e) {
e.printStackTrace();
}
}
return result;
}
public static String doGet(String url,Map<String,Object> params) {
return doGet(url,params,null);
}
public static String doGet(String url) {
return doGet(url,null);
}
private static String doPost(boolean useJson,String url,Map<String,String> headers,Map<String,Object> params,String json) {
String result=null;
if(url != null && url.length()>0) {
Request.Builder builder =new Request.Builder().url(url);
addHeaders(builder,headers);
RequestBody body = null;
if(!useJson) {
body = mapToFormBody(params).build();
}else {
body = RequestBody.create(MediaType.parse("application/json"), json!=null&&json.length()>0?json:"{}");
}
builder.post(body);
Request request = builder.build();
try(Response response = client.newCall(request).execute()){
if(response.isSuccessful()) {
result = response.body().string();
}
}catch(IOException e) {
e.printStackTrace();
}
}
return result;
}
public static String doPost(String url,Map<String,Object> params,Map<String,String> headers) {
return doPost(false,url,headers,params,null);
}
public static String doPost(String url,Map<String,Object> params) {
return doPost(url,params,null);
}
public static String doPost(String url) {
return doPost(url,null);
}
public static String doPostJson(String url,String json,Map<String,String> headers) {
return doPost(true,url,headers,null,json);
}
public static String doPostJson(String url,String json) {
return doPostJson(url,json,null);
}
public static String doPostJson(String url) {
return doPostJson(url,null);
}
public static void main(String[] args){
String url="http://www.baidu.com";
Map<String,Object> params=new HashMap<>();
params.put("fr", "wwwt");
params.put("kw", "测试");
Map<String,String> headers=new HashMap<>();
headers.put("header111", "header111");
System.out.println(HttpUtil.doPost(url,params,headers));
}
}
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>