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