mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
代码优化
This commit is contained in:
@@ -6,6 +6,7 @@ import okhttp3.Cookie;
|
|||||||
import okhttp3.CookieJar;
|
import okhttp3.CookieJar;
|
||||||
import okhttp3.FormBody;
|
import okhttp3.FormBody;
|
||||||
import okhttp3.HttpUrl;
|
import okhttp3.HttpUrl;
|
||||||
|
import okhttp3.MediaType;
|
||||||
import okhttp3.MultipartBody;
|
import okhttp3.MultipartBody;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
@@ -22,13 +23,21 @@ import java.util.Set;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* HTTP请求工具
|
||||||
|
*
|
||||||
* @author tanghc
|
* @author tanghc
|
||||||
*/
|
*/
|
||||||
public class OpenHttp {
|
public class OpenHttp {
|
||||||
|
private static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8");
|
||||||
|
|
||||||
private Map<String, List<Cookie>> cookieStore = new HashMap<String, List<Cookie>>();
|
private Map<String, List<Cookie>> cookieStore = new HashMap<String, List<Cookie>>();
|
||||||
|
|
||||||
private OkHttpClient httpClient;
|
private OkHttpClient httpClient;
|
||||||
|
|
||||||
|
public OpenHttp() {
|
||||||
|
this(new OpenConfig());
|
||||||
|
}
|
||||||
|
|
||||||
public OpenHttp(OpenConfig openConfig) {
|
public OpenHttp(OpenConfig openConfig) {
|
||||||
this.initHttpClient(openConfig);
|
this.initHttpClient(openConfig);
|
||||||
}
|
}
|
||||||
@@ -69,24 +78,18 @@ public class OpenHttp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交表单
|
* 请求json数据,contentType=application/json
|
||||||
*
|
* @param url 请求路径
|
||||||
* @param url url
|
* @param json json数据
|
||||||
* @param form 参数
|
|
||||||
* @param header header
|
* @param header header
|
||||||
* @param method 请求方式,post,get等
|
* @return 返回响应结果
|
||||||
* @return
|
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public String requestFormBody(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
|
public String requestJson(String url, String json, Map<String, String> header) throws IOException {
|
||||||
FormBody.Builder paramBuilder = new FormBody.Builder(StandardCharsets.UTF_8);
|
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
|
||||||
for (Map.Entry<String, String> entry : form.entrySet()) {
|
|
||||||
paramBuilder.add(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
FormBody formBody = paramBuilder.build();
|
|
||||||
Request.Builder requestBuilder = new Request.Builder()
|
Request.Builder requestBuilder = new Request.Builder()
|
||||||
.url(url)
|
.url(url)
|
||||||
.method(method, formBody);
|
.post(body);
|
||||||
// 添加header
|
// 添加header
|
||||||
addHeader(requestBuilder, header);
|
addHeader(requestBuilder, header);
|
||||||
|
|
||||||
@@ -101,6 +104,73 @@ public class OpenHttp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提交表单
|
||||||
|
*
|
||||||
|
* @param url url
|
||||||
|
* @param form 参数
|
||||||
|
* @param header header
|
||||||
|
* @param method 请求方式,post,get等
|
||||||
|
* @return
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public String request(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
|
||||||
|
Request.Builder requestBuilder = buildRequestBuilder(url, form, method);
|
||||||
|
// 添加header
|
||||||
|
addHeader(requestBuilder, header);
|
||||||
|
|
||||||
|
Request request = requestBuilder.build();
|
||||||
|
Response response = httpClient
|
||||||
|
.newCall(request)
|
||||||
|
.execute();
|
||||||
|
try {
|
||||||
|
return response.body().string();
|
||||||
|
} finally {
|
||||||
|
response.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Request.Builder buildRequestBuilder(String url, Map<String, String> form, String method) {
|
||||||
|
switch (method) {
|
||||||
|
case "get":
|
||||||
|
return new Request.Builder()
|
||||||
|
.url(buildHttpUrl(url, form))
|
||||||
|
.get();
|
||||||
|
case "head":
|
||||||
|
return new Request.Builder()
|
||||||
|
.url(buildHttpUrl(url, form))
|
||||||
|
.head();
|
||||||
|
case "put":
|
||||||
|
return new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.put(buildFormBody(form));
|
||||||
|
case "delete":
|
||||||
|
return new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.delete(buildFormBody(form));
|
||||||
|
default:
|
||||||
|
return new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.post(buildFormBody(form));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HttpUrl buildHttpUrl(String url, Map<String, String> form) {
|
||||||
|
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
|
||||||
|
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||||
|
urlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
return urlBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FormBody buildFormBody(Map<String, String> form) {
|
||||||
|
FormBody.Builder paramBuilder = new FormBody.Builder(StandardCharsets.UTF_8);
|
||||||
|
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||||
|
paramBuilder.add(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
return paramBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交表单,并且上传文件
|
* 提交表单,并且上传文件
|
||||||
*
|
*
|
||||||
@@ -162,4 +232,5 @@ public class OpenHttp {
|
|||||||
this.httpClient = httpClient;
|
this.httpClient = httpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -42,7 +42,9 @@ public class OpenRequest {
|
|||||||
}
|
}
|
||||||
return openHttp.get(url, header);
|
return openHttp.get(url, header);
|
||||||
} else {
|
} else {
|
||||||
return openHttp.requestFormBody(url, form, header, requestMethod.name());
|
return openHttp.request(url, form, header, requestMethod.name());
|
||||||
|
// 下面这种方式也可以,以application/json方式请求
|
||||||
|
// return openHttp.requestJson(url, JSON.toJSONString(form), header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Reference in New Issue
Block a user