diff --git a/src/main/java/com/taover/util/UtilHttpByOkHttp.java b/src/main/java/com/taover/util/UtilHttpByOkHttp.java index a345423..0a0ab34 100644 --- a/src/main/java/com/taover/util/UtilHttpByOkHttp.java +++ b/src/main/java/com/taover/util/UtilHttpByOkHttp.java @@ -30,6 +30,10 @@ import okhttp3.Response; import okhttp3.ResponseBody; public class UtilHttpByOkHttp { + //防止线程并发,使用threadlocal管理client + private static ThreadLocal localHttpClientForHttp = new ThreadLocal(); + private static ThreadLocal localHttpClientForHttps = new ThreadLocal(); + public static final String METHOD_GET = "GET"; public static final String METHOD_POST = "POST"; public static final String METHOD_DELETE = "DELETE"; @@ -125,16 +129,36 @@ public class UtilHttpByOkHttp { public static OkHttpClient getHttpClient(String url, int timeoutInSecond){ - if(url.trim().toLowerCase().startsWith("https")){ - return buildOkHttpClientForHttps(timeoutInSecond); + OkHttpClient client = null; + boolean isHttps = url.trim().toLowerCase().startsWith("https"); + if(isHttps){ + client = localHttpClientForHttps.get(); + }else{ + client = localHttpClientForHttp.get(); + } + + if(client != null){ + return client; + } + + if(isHttps){ + client = buildOkHttpClientForHttps(timeoutInSecond); }else{ OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(timeoutInSecond, TimeUnit.SECONDS) .readTimeout(timeoutInSecond, TimeUnit.SECONDS) .writeTimeout(timeoutInSecond,TimeUnit.SECONDS) .retryOnConnectionFailure(true); - return builder.build(); + client = builder.build(); + } + + if(isHttps){ + localHttpClientForHttps.set(client); + }else{ + localHttpClientForHttp.set(client); } + + return client; } /** @@ -216,30 +240,11 @@ public class UtilHttpByOkHttp { * @return 只发post请求 * @throws Exception */ - public static ResponseBody sendPostFile(String url, String filePath, String fileName,String fileKey,Map header) throws Exception { - OkHttpClient client = new OkHttpClient(); - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart(fileKey, fileName, - RequestBody.create(MediaType.parse("multipart/form-data"), new File(filePath))) - .build(); - - Request request = new Request.Builder() - .headers(Headers.of(header)) - .url(url) - .post(requestBody) - .build(); - - Response response = client.newCall(request).execute(); - if (!response.isSuccessful()){ - throw new IOException("Unexpected code " + response); - } - return response.body(); - } - - + public static ResponseBody sendPostFile(String url, String filePath, String fileName, String fileKey, Map header) throws Exception { + return sendPostFile(url, new File(filePath), fileKey, header); + } - public static ResponseBody sendPostFile(String url, File file,String fileKey,Map header) throws Exception { + public static ResponseBody sendPostFile(String url, File file, String fileKey, Map header) throws Exception { OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) -- libgit2 0.21.2