代码优化

1.x
tanghc 5 years ago
parent 64f80a589c
commit 74f3ef2000
  1. 89
      sop-sdk/sdk-java/src/main/java/com/gitee/sop/sdk/client/OpenHttp.java
  2. 4
      sop-sdk/sdk-java/src/main/java/com/gitee/sop/sdk/client/OpenRequest.java

@ -6,6 +6,7 @@ import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.FormBody;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -22,13 +23,21 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* HTTP请求工具
*
* @author tanghc
*/
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 OkHttpClient httpClient;
public OpenHttp() {
this(new OpenConfig());
}
public OpenHttp(OpenConfig openConfig) {
this.initHttpClient(openConfig);
}
@ -68,6 +77,33 @@ public class OpenHttp {
return response.body().string();
}
/**
* 请求json数据contentType=application/json
* @param url 请求路径
* @param json json数据
* @param header header
* @return 返回响应结果
* @throws IOException
*/
public String requestJson(String url, String json, Map<String, String> header) throws IOException {
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
Request.Builder requestBuilder = new Request.Builder()
.url(url)
.post(body);
// 添加header
addHeader(requestBuilder, header);
Request request = requestBuilder.build();
Response response = httpClient
.newCall(request)
.execute();
try {
return response.body().string();
} finally {
response.close();
}
}
/**
* 提交表单
*
@ -78,15 +114,8 @@ public class OpenHttp {
* @return
* @throws IOException
*/
public String requestFormBody(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
FormBody.Builder paramBuilder = new FormBody.Builder(StandardCharsets.UTF_8);
for (Map.Entry<String, String> entry : form.entrySet()) {
paramBuilder.add(entry.getKey(), entry.getValue());
}
FormBody formBody = paramBuilder.build();
Request.Builder requestBuilder = new Request.Builder()
.url(url)
.method(method, formBody);
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);
@ -101,6 +130,47 @@ public class OpenHttp {
}
}
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;
}
}

@ -42,7 +42,9 @@ public class OpenRequest {
}
return openHttp.get(url, header);
} 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) {

Loading…
Cancel
Save