|
@@ -1,10 +1,8 @@
|
|
package com.fdkk.sxz.util;
|
|
package com.fdkk.sxz.util;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
-import cn.hutool.http.HttpRequest;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
-import com.fdkk.sxz.Interceptor.OkHttpLogInterceptor;
|
|
|
|
import okhttp3.*;
|
|
import okhttp3.*;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -29,12 +27,41 @@ public class OkHttpUtils {
|
|
private static final String HTTP_JSON = "application/json; charset=utf-8";
|
|
private static final String HTTP_JSON = "application/json; charset=utf-8";
|
|
private static final String HTTP_FORM = "application/x-www-form-urlencoded; charset=utf-8";
|
|
private static final String HTTP_FORM = "application/x-www-form-urlencoded; charset=utf-8";
|
|
|
|
|
|
- private static final OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new OkHttpLogInterceptor())
|
|
|
|
- .connectTimeout(3000, TimeUnit.SECONDS)
|
|
|
|
- .readTimeout(3000, TimeUnit.SECONDS)
|
|
|
|
- .writeTimeout(3000, TimeUnit.SECONDS)
|
|
|
|
- .build();
|
|
|
|
|
|
|
|
|
|
+ private final static int READ_TIMEOUT = 3000;
|
|
|
|
+
|
|
|
|
+ private final static int CONNECT_TIMEOUT = 3000;
|
|
|
|
+
|
|
|
|
+ private final static int WRITE_TIMEOUT = 3000;
|
|
|
|
+
|
|
|
|
+ private static volatile OkHttpClient okHttpClient;
|
|
|
|
+
|
|
|
|
+ private OkHttpUtils() {
|
|
|
|
+
|
|
|
|
+ okhttp3.OkHttpClient.Builder clientBuilder = new okhttp3.OkHttpClient.Builder();
|
|
|
|
+ //读取超时
|
|
|
|
+ clientBuilder.readTimeout(OkHttpUtils.READ_TIMEOUT, TimeUnit.SECONDS);
|
|
|
|
+ //连接超时
|
|
|
|
+ clientBuilder.connectTimeout(OkHttpUtils.CONNECT_TIMEOUT, TimeUnit.SECONDS);
|
|
|
|
+ //写入超时
|
|
|
|
+ clientBuilder.writeTimeout(OkHttpUtils.WRITE_TIMEOUT, TimeUnit.SECONDS);
|
|
|
|
+ //自定义连接池最大空闲连接数和等待时间大小,否则默认最大5个空闲连接
|
|
|
|
+ clientBuilder.connectionPool(new ConnectionPool(32, 5, TimeUnit.MINUTES));
|
|
|
|
+
|
|
|
|
+ OkHttpUtils.okHttpClient = clientBuilder.build();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static OkHttpClient getInstance() {
|
|
|
|
+ if (null == OkHttpUtils.okHttpClient) {
|
|
|
|
+ synchronized (OkHttpUtils.class) {
|
|
|
|
+ if (OkHttpUtils.okHttpClient == null) {
|
|
|
|
+ new OkHttpUtils();
|
|
|
|
+ return OkHttpUtils.okHttpClient;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return OkHttpUtils.okHttpClient;
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 同步 POST调用 无Header
|
|
* 同步 POST调用 无Header
|
|
@@ -46,7 +73,7 @@ public class OkHttpUtils {
|
|
|
|
|
|
public static String httpPostForm(String url, Map<String, String> paramsMap) {
|
|
public static String httpPostForm(String url, Map<String, String> paramsMap) {
|
|
if (url == null || "".equals(url)) {
|
|
if (url == null || "".equals(url)) {
|
|
- log.error("url为null!");
|
|
|
|
|
|
+ OkHttpUtils.log.error("url为null!");
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
// 添加请求类型
|
|
// 添加请求类型
|
|
@@ -62,12 +89,12 @@ public class OkHttpUtils {
|
|
|
|
|
|
Request request = requestBuilder.post(formBody).build();
|
|
Request request = requestBuilder.post(formBody).build();
|
|
try {
|
|
try {
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("http PostForm 请求成功; [url={}, requestContent={}]", url, paramsMap.toString());
|
|
|
|
|
|
+ OkHttpUtils.log.info("http PostForm 请求成功; [url={}, requestContent={}]", url, paramsMap.toString());
|
|
return response.body().string();
|
|
return response.body().string();
|
|
} else {
|
|
} else {
|
|
- log.warn("Http PostForm 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, paramsMap.toString());
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http PostForm 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, paramsMap.toString());
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
@@ -86,7 +113,7 @@ public class OkHttpUtils {
|
|
|
|
|
|
public static String httpPostForm(String url, Map<String, String> paramsMap, Map<String, String> headers) {
|
|
public static String httpPostForm(String url, Map<String, String> paramsMap, Map<String, String> headers) {
|
|
if (url == null || "".equals(url)) {
|
|
if (url == null || "".equals(url)) {
|
|
- log.error("url为null!");
|
|
|
|
|
|
+ OkHttpUtils.log.error("url为null!");
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
// 添加请求类型
|
|
// 添加请求类型
|
|
@@ -105,12 +132,12 @@ public class OkHttpUtils {
|
|
|
|
|
|
Request request = requestBuilder.post(formBody).build();
|
|
Request request = requestBuilder.post(formBody).build();
|
|
try {
|
|
try {
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("http PostForm 请求成功; [url={}, requestContent={}]", url, paramsMap.toString());
|
|
|
|
|
|
+ OkHttpUtils.log.info("http PostForm 请求成功; [url={}, requestContent={}]", url, paramsMap.toString());
|
|
return response.body().string();
|
|
return response.body().string();
|
|
} else {
|
|
} else {
|
|
- log.warn("Http PostForm 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, paramsMap.toString());
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http PostForm 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, paramsMap.toString());
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
@@ -129,36 +156,36 @@ public class OkHttpUtils {
|
|
*/
|
|
*/
|
|
public static String httpGet(String url) throws Exception {
|
|
public static String httpGet(String url) throws Exception {
|
|
if (url == null || "".equals(url)) {
|
|
if (url == null || "".equals(url)) {
|
|
- log.error("url为null!");
|
|
|
|
|
|
+ OkHttpUtils.log.error("url为null!");
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
|
|
|
|
Request.Builder builder = new Request.Builder();
|
|
Request.Builder builder = new Request.Builder();
|
|
Request request = builder.get().url(url).build();
|
|
Request request = builder.get().url(url).build();
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("http GET 请求成功; [url={}]", url);
|
|
|
|
|
|
+ OkHttpUtils.log.info("http GET 请求成功; [url={}]", url);
|
|
return response.body().string();
|
|
return response.body().string();
|
|
} else {
|
|
} else {
|
|
- log.warn("Http GET 请求失败; [errorCode = {} , url={}]", response.code(), url);
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http GET 请求失败; [errorCode = {} , url={}]", response.code(), url);
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
public static String httpGet(String url, Map<String, String> headers) throws Exception {
|
|
public static String httpGet(String url, Map<String, String> headers) throws Exception {
|
|
if (CollectionUtils.isEmpty(headers)) {
|
|
if (CollectionUtils.isEmpty(headers)) {
|
|
- return httpGet(url);
|
|
|
|
|
|
+ return OkHttpUtils.httpGet(url);
|
|
}
|
|
}
|
|
|
|
|
|
Request.Builder builder = new Request.Builder();
|
|
Request.Builder builder = new Request.Builder();
|
|
headers.forEach((String key, String value) -> builder.header(key, value));
|
|
headers.forEach((String key, String value) -> builder.header(key, value));
|
|
Request request = builder.get().url(url).build();
|
|
Request request = builder.get().url(url).build();
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("http GET 请求成功; [url={}]", url);
|
|
|
|
|
|
+ OkHttpUtils.log.info("http GET 请求成功; [url={}]", url);
|
|
return response.body().string();
|
|
return response.body().string();
|
|
} else {
|
|
} else {
|
|
- log.warn("Http GET 请求失败; [errorxxCode = {} , url={}]", response.code(), url);
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http GET 请求失败; [errorxxCode = {} , url={}]", response.code(), url);
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
@@ -172,21 +199,21 @@ public class OkHttpUtils {
|
|
*/
|
|
*/
|
|
public static String httpPostJson(String url, String json) {
|
|
public static String httpPostJson(String url, String json) {
|
|
if (url == null || "".equals(url)) {
|
|
if (url == null || "".equals(url)) {
|
|
- log.error("url为null!");
|
|
|
|
|
|
+ OkHttpUtils.log.error("url为null!");
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
- MediaType JSON = MediaType.parse(HTTP_JSON);
|
|
|
|
|
|
+ MediaType JSON = MediaType.parse(OkHttpUtils.HTTP_JSON);
|
|
RequestBody body = RequestBody.create(JSON, json);
|
|
RequestBody body = RequestBody.create(JSON, json);
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
Request request = requestBuilder.post(body).build();
|
|
Request request = requestBuilder.post(body).build();
|
|
try {
|
|
try {
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
String returnStr = response.body().string();
|
|
String returnStr = response.body().string();
|
|
- log.info("http Post 请求成功; [url={}, requestContent={},return={}]", url, json,returnStr);
|
|
|
|
|
|
+ OkHttpUtils.log.info("http Post 请求成功; [url={}, requestContent={},return={}]", url, json, returnStr);
|
|
return returnStr;
|
|
return returnStr;
|
|
} else {
|
|
} else {
|
|
- log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, json);
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, json);
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
@@ -205,10 +232,10 @@ public class OkHttpUtils {
|
|
*/
|
|
*/
|
|
public static JSONObject httpPostJson(String url, String json, Map<String, String> headers) {
|
|
public static JSONObject httpPostJson(String url, String json, Map<String, String> headers) {
|
|
if (CollectionUtils.isEmpty(headers)) {
|
|
if (CollectionUtils.isEmpty(headers)) {
|
|
- httpPostJson(url, json);
|
|
|
|
|
|
+ OkHttpUtils.httpPostJson(url, json);
|
|
}
|
|
}
|
|
|
|
|
|
- MediaType mediaType = MediaType.parse(HTTP_JSON);
|
|
|
|
|
|
+ MediaType mediaType = MediaType.parse(OkHttpUtils.HTTP_JSON);
|
|
RequestBody body = RequestBody.create(mediaType, json);
|
|
RequestBody body = RequestBody.create(mediaType, json);
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
if (ObjectUtil.isNotNull(headers)) {
|
|
if (ObjectUtil.isNotNull(headers)) {
|
|
@@ -216,12 +243,12 @@ public class OkHttpUtils {
|
|
}
|
|
}
|
|
Request request = requestBuilder.post(body).build();
|
|
Request request = requestBuilder.post(body).build();
|
|
try {
|
|
try {
|
|
- Response response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ Response response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("http Post 请求成功; [url={}, requestContent={} ,headers{}]", url, json, headers);
|
|
|
|
|
|
+ OkHttpUtils.log.info("http Post 请求成功; [url={}, requestContent={} ,headers{}]", url, json, headers);
|
|
return JSON.parseObject(response.body().string());
|
|
return JSON.parseObject(response.body().string());
|
|
} else {
|
|
} else {
|
|
- log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={},headers{}]", response.code(), url, json, headers);
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={},headers{}]", response.code(), url, json, headers);
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
throw new RuntimeException("同步http请求失败,url:" + url, e);
|
|
@@ -238,7 +265,7 @@ public class OkHttpUtils {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public static String postDataByForm(String url, String content, Map<String, String> headers) {
|
|
public static String postDataByForm(String url, String content, Map<String, String> headers) {
|
|
- MediaType JSON = MediaType.parse(HTTP_FORM);
|
|
|
|
|
|
+ MediaType JSON = MediaType.parse(OkHttpUtils.HTTP_FORM);
|
|
RequestBody body = RequestBody.create(JSON, content);
|
|
RequestBody body = RequestBody.create(JSON, content);
|
|
|
|
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
Request.Builder requestBuilder = new Request.Builder().url(url);
|
|
@@ -251,15 +278,15 @@ public class OkHttpUtils {
|
|
|
|
|
|
Response response = null;
|
|
Response response = null;
|
|
try {
|
|
try {
|
|
- response = okHttpClient.newCall(request).execute();
|
|
|
|
|
|
+ response = OkHttpUtils.okHttpClient.newCall(request).execute();
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
- log.info("postDataByForm; [postUrl={}, requestContent={}, responseCode={}]", url, content, response.code());
|
|
|
|
|
|
+ OkHttpUtils.log.info("postDataByForm; [postUrl={}, requestContent={}, responseCode={}]", url, content, response.code());
|
|
return response.body().string();
|
|
return response.body().string();
|
|
} else {
|
|
} else {
|
|
- log.warn("Http Post Form请求失败,[url={}, param={}]", url, content);
|
|
|
|
|
|
+ OkHttpUtils.log.warn("Http Post Form请求失败,[url={}, param={}]", url, content);
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
- log.error("Http Post Form请求失败,[url={}, param={}]", url, content, e);
|
|
|
|
|
|
+ OkHttpUtils.log.error("Http Post Form请求失败,[url={}, param={}]", url, content, e);
|
|
throw new RuntimeException("Http Post Form请求失败,url:" + url);
|
|
throw new RuntimeException("Http Post Form请求失败,url:" + url);
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
@@ -276,7 +303,7 @@ public class OkHttpUtils {
|
|
*/
|
|
*/
|
|
@Deprecated
|
|
@Deprecated
|
|
public static Future<Boolean> asyncHttpByJson(HttpMethod httpMethod, String url, Map<String, String> headers, String content) {
|
|
public static Future<Boolean> asyncHttpByJson(HttpMethod httpMethod, String url, Map<String, String> headers, String content) {
|
|
- MediaType JSON = MediaType.parse(HTTP_JSON);
|
|
|
|
|
|
+ MediaType JSON = MediaType.parse(OkHttpUtils.HTTP_JSON);
|
|
RequestBody body = RequestBody.create(JSON, content);
|
|
RequestBody body = RequestBody.create(JSON, content);
|
|
|
|
|
|
Request.Builder requestBuilder = new Request.Builder()
|
|
Request.Builder requestBuilder = new Request.Builder()
|
|
@@ -297,11 +324,11 @@ public class OkHttpUtils {
|
|
}
|
|
}
|
|
|
|
|
|
Request request = requestBuilder.build();
|
|
Request request = requestBuilder.build();
|
|
- Call call = okHttpClient.newCall(request);
|
|
|
|
|
|
+ Call call = OkHttpUtils.okHttpClient.newCall(request);
|
|
call.enqueue(new Callback() {
|
|
call.enqueue(new Callback() {
|
|
@Override
|
|
@Override
|
|
public void onFailure(Call call, IOException e) {
|
|
public void onFailure(Call call, IOException e) {
|
|
- log.error("异步http {} 请求失败,[url={}, param={}]", httpMethod.name(), url, content);
|
|
|
|
|
|
+ OkHttpUtils.log.error("异步http {} 请求失败,[url={}, param={}]", httpMethod.name(), url, content);
|
|
throw new RuntimeException("异步http请求失败,url:" + url);
|
|
throw new RuntimeException("异步http请求失败,url:" + url);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -310,7 +337,7 @@ public class OkHttpUtils {
|
|
if (response.code() == 200) {
|
|
if (response.code() == 200) {
|
|
System.out.println("需要加入异步回调操作");
|
|
System.out.println("需要加入异步回调操作");
|
|
} else {
|
|
} else {
|
|
- log.error("异步http {} 请求失败,错误码为{},请求参数为[url={}, param={}]", httpMethod.name(), response.code(), url, content);
|
|
|
|
|
|
+ OkHttpUtils.log.error("异步http {} 请求失败,错误码为{},请求参数为[url={}, param={}]", httpMethod.name(), response.code(), url, content);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -325,7 +352,7 @@ public class OkHttpUtils {
|
|
* @param respConsumer
|
|
* @param respConsumer
|
|
*/
|
|
*/
|
|
public static void asyncCall(Request request, Consumer<Exception> failure, Consumer<Response> respConsumer) {
|
|
public static void asyncCall(Request request, Consumer<Exception> failure, Consumer<Response> respConsumer) {
|
|
- okHttpClient.newCall(request).enqueue(new Callback() {
|
|
|
|
|
|
+ OkHttpUtils.okHttpClient.newCall(request).enqueue(new Callback() {
|
|
@Override
|
|
@Override
|
|
public void onFailure(Call call, IOException e) {
|
|
public void onFailure(Call call, IOException e) {
|
|
failure.accept(e);
|
|
failure.accept(e);
|