Commit 68548d3e04d6e993f4372ca32c05e06b88c7e724
1 parent
bf02f60e
Exists in
master
优化okhttpclient
Showing
1 changed file
with
31 additions
and
26 deletions
Show diff stats
src/main/java/com/taover/util/UtilHttpByOkHttp.java
| @@ -30,6 +30,10 @@ import okhttp3.Response; | @@ -30,6 +30,10 @@ import okhttp3.Response; | ||
| 30 | import okhttp3.ResponseBody; | 30 | import okhttp3.ResponseBody; |
| 31 | 31 | ||
| 32 | public class UtilHttpByOkHttp { | 32 | public class UtilHttpByOkHttp { |
| 33 | + //防止线程并发,使用threadlocal管理client | ||
| 34 | + private static ThreadLocal<OkHttpClient> localHttpClientForHttp = new ThreadLocal<OkHttpClient>(); | ||
| 35 | + private static ThreadLocal<OkHttpClient> localHttpClientForHttps = new ThreadLocal<OkHttpClient>(); | ||
| 36 | + | ||
| 33 | public static final String METHOD_GET = "GET"; | 37 | public static final String METHOD_GET = "GET"; |
| 34 | public static final String METHOD_POST = "POST"; | 38 | public static final String METHOD_POST = "POST"; |
| 35 | public static final String METHOD_DELETE = "DELETE"; | 39 | public static final String METHOD_DELETE = "DELETE"; |
| @@ -125,16 +129,36 @@ public class UtilHttpByOkHttp { | @@ -125,16 +129,36 @@ public class UtilHttpByOkHttp { | ||
| 125 | 129 | ||
| 126 | 130 | ||
| 127 | public static OkHttpClient getHttpClient(String url, int timeoutInSecond){ | 131 | public static OkHttpClient getHttpClient(String url, int timeoutInSecond){ |
| 128 | - if(url.trim().toLowerCase().startsWith("https")){ | ||
| 129 | - return buildOkHttpClientForHttps(timeoutInSecond); | 132 | + OkHttpClient client = null; |
| 133 | + boolean isHttps = url.trim().toLowerCase().startsWith("https"); | ||
| 134 | + if(isHttps){ | ||
| 135 | + client = localHttpClientForHttps.get(); | ||
| 136 | + }else{ | ||
| 137 | + client = localHttpClientForHttp.get(); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + if(client != null){ | ||
| 141 | + return client; | ||
| 142 | + } | ||
| 143 | + | ||
| 144 | + if(isHttps){ | ||
| 145 | + client = buildOkHttpClientForHttps(timeoutInSecond); | ||
| 130 | }else{ | 146 | }else{ |
| 131 | OkHttpClient.Builder builder = new OkHttpClient.Builder(); | 147 | OkHttpClient.Builder builder = new OkHttpClient.Builder(); |
| 132 | builder.connectTimeout(timeoutInSecond, TimeUnit.SECONDS) | 148 | builder.connectTimeout(timeoutInSecond, TimeUnit.SECONDS) |
| 133 | .readTimeout(timeoutInSecond, TimeUnit.SECONDS) | 149 | .readTimeout(timeoutInSecond, TimeUnit.SECONDS) |
| 134 | .writeTimeout(timeoutInSecond,TimeUnit.SECONDS) | 150 | .writeTimeout(timeoutInSecond,TimeUnit.SECONDS) |
| 135 | .retryOnConnectionFailure(true); | 151 | .retryOnConnectionFailure(true); |
| 136 | - return builder.build(); | 152 | + client = builder.build(); |
| 153 | + } | ||
| 154 | + | ||
| 155 | + if(isHttps){ | ||
| 156 | + localHttpClientForHttps.set(client); | ||
| 157 | + }else{ | ||
| 158 | + localHttpClientForHttp.set(client); | ||
| 137 | } | 159 | } |
| 160 | + | ||
| 161 | + return client; | ||
| 138 | } | 162 | } |
| 139 | 163 | ||
| 140 | /** | 164 | /** |
| @@ -216,30 +240,11 @@ public class UtilHttpByOkHttp { | @@ -216,30 +240,11 @@ public class UtilHttpByOkHttp { | ||
| 216 | * @return 只发post请求 | 240 | * @return 只发post请求 |
| 217 | * @throws Exception | 241 | * @throws Exception |
| 218 | */ | 242 | */ |
| 219 | - public static ResponseBody sendPostFile(String url, String filePath, String fileName,String fileKey,Map<String, String> header) throws Exception { | ||
| 220 | - OkHttpClient client = new OkHttpClient(); | ||
| 221 | - RequestBody requestBody = new MultipartBody.Builder() | ||
| 222 | - .setType(MultipartBody.FORM) | ||
| 223 | - .addFormDataPart(fileKey, fileName, | ||
| 224 | - RequestBody.create(MediaType.parse("multipart/form-data"), new File(filePath))) | ||
| 225 | - .build(); | ||
| 226 | - | ||
| 227 | - Request request = new Request.Builder() | ||
| 228 | - .headers(Headers.of(header)) | ||
| 229 | - .url(url) | ||
| 230 | - .post(requestBody) | ||
| 231 | - .build(); | ||
| 232 | - | ||
| 233 | - Response response = client.newCall(request).execute(); | ||
| 234 | - if (!response.isSuccessful()){ | ||
| 235 | - throw new IOException("Unexpected code " + response); | ||
| 236 | - } | ||
| 237 | - return response.body(); | ||
| 238 | - } | ||
| 239 | - | ||
| 240 | - | 243 | + public static ResponseBody sendPostFile(String url, String filePath, String fileName, String fileKey, Map<String, String> header) throws Exception { |
| 244 | + return sendPostFile(url, new File(filePath), fileKey, header); | ||
| 245 | + } | ||
| 241 | 246 | ||
| 242 | - public static ResponseBody sendPostFile(String url, File file,String fileKey,Map<String, String> header) throws Exception { | 247 | + public static ResponseBody sendPostFile(String url, File file, String fileKey, Map<String, String> header) throws Exception { |
| 243 | OkHttpClient client = new OkHttpClient(); | 248 | OkHttpClient client = new OkHttpClient(); |
| 244 | RequestBody requestBody = new MultipartBody.Builder() | 249 | RequestBody requestBody = new MultipartBody.Builder() |
| 245 | .setType(MultipartBody.FORM) | 250 | .setType(MultipartBody.FORM) |