代码优化

This commit is contained in:
tanghc
2019-07-24 16:31:56 +08:00
parent 64f80a589c
commit 74f3ef2000
2 changed files with 87 additions and 14 deletions

View File

@@ -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 请求方式postget等 * @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 请求方式postget等
* @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;
} }
} }

View File

@@ -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) {