Browse Source

修改超时

xiewenjie 3 years ago
parent
commit
830f729e45
1 changed files with 70 additions and 43 deletions
  1. 70 43
      sxz-base/src/main/java/com/fdkk/sxz/util/OkHttpUtils.java

+ 70 - 43
sxz-base/src/main/java/com/fdkk/sxz/util/OkHttpUtils.java

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