OkHttp工具类

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.2.2</version>
</dependency>


package dhht.seal.hn.gate.util;

import okhttp3.OkHttpClient;

import java.util.concurrent.TimeUnit;

/**
* @author sh
*/
public enum OkHttpClientEnum {
INSTANCE;
private OkHttpClient client;

private OkHttpClientEnum() {
client = new OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS
).retryOnConnectionFailure(false)
.build();
}

public OkHttpClient getInstance() {
return client;
}
}


package dhht.seal.hn.gate.util;

import com.alibaba.fastjson.JSON;
import dhht.seal.hn.gate.vo.ResultVO;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;

import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
* @Author: sh
* @Description: OkHttpUtil
* @Date: 2020/08/28
*/
@Slf4j
public class OkHttpUtil {

private static final String JSON_PRODUCES = "application/json; charset=utf-8";

private static final String FORM_PRODUCES = "multipart/form-data; charset=utf-8";

private static OkHttpClient client = new OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS
).retryOnConnectionFailure(false)
.build();

public static String get(String url) {
//OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = OkHttpClientEnum.INSTANCE.getInstance().newCall(request);
String result = null;
try {
Response response = call.execute();
ResponseBody body = response.body();
if (null != response) {
result = response.body().string();
}
return result;
} catch (Exception e) {
log.error(e.getMessage());
return result;
} finally {
}
}

@Deprecated
public static String post(String url, String json) {
MediaType mediaType = MediaType.parse(JSON_PRODUCES);
//OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(mediaType, json);
String result = null;
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try {
Call call = OkHttpClientEnum.INSTANCE.getInstance().newCall(request);
Response response = call.execute();
if (null != response) {
result = response.body().string();
}
return result;
} catch (Exception e) {
log.error(e.getMessage());
return result;
} finally {
}
}

@Deprecated
public static ResultVO postWithHead(String url, String json, String apiKey, String apiVal) {
ResultVO resultVO = null;
try {
MediaType mediaType = MediaType.parse(JSON_PRODUCES);
//OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(mediaType, json);
String result = null;
Request request = new Request.Builder()
.url(url).addHeader(apiKey, apiVal)
.post(body)
.build();
Call call = OkHttpClientEnum.INSTANCE.getInstance().newCall(request);
Response response = call.execute();
if (null != response) {
result = response.body().string();
resultVO = JSON.parseObject(result, ResultVO.class);
}
return resultVO;
} catch (Exception e) {
log.error(e.getMessage());
resultVO = new ResultVO(-1, e.getMessage(), null);
return resultVO;
} finally {
}
}


public static String getWithHeader(String url, String apiKey, String apiVal) {
String result = null;
try {
Request request = new Request.Builder().addHeader("Connection", "close")
.url(url)
.header(apiKey, apiVal)
.build();
Call call = OkHttpClientEnum.INSTANCE.getInstance().newCall(request);
Response response = call.execute();
ResponseBody body = response.body();
if (null != body) {
result = body.string();
}
return result;
} catch (Exception e) {
log.error(e.getMessage());
return result;
}
}

@Deprecated
public static ResultVO pushFile(String url, List<String> pathList, Map<String, String> params, String apiKey, String apiVal) {
ResultVO resultVO = null;
try {
MediaType MutilPart_Form_Data = MediaType.parse(FORM_PRODUCES);
RequestBody bodyParams = RequestBody.create(MutilPart_Form_Data, JSON.toJSONString(params));
MultipartBody.Builder requestBodyBuilder = new MultipartBody.Builder()
.setType(MultipartBody.FORM);
//.addFormDataPart("key", "", bodyParams);
// 添加表单文件数据
addFormDataPart(requestBodyBuilder, params);
Iterator<String> iterator = pathList.iterator();
while (iterator.hasNext()) {
String path = iterator.next();
File file = new File(path);
requestBodyBuilder.addFormDataPart("file", file.getName(), RequestBody.create(MutilPart_Form_Data, new File(path)));
}
RequestBody requestBody = requestBodyBuilder.build();
Request request = new Request.Builder()
.url(url).addHeader(apiKey, apiVal)
.post(requestBody)
.build();
Response response = OkHttpClientEnum.INSTANCE.getInstance().newCall(request).execute();
String rs = response.body().string();
resultVO = JSON.parseObject(rs, ResultVO.class);
return resultVO;
} catch (Exception e) {
log.error(e.getMessage());
resultVO = new ResultVO(-1, e.getMessage(), null);
return resultVO;
}
}

public static ResultVO pushOneFile(String url, String filePath, Map<String, String> params, String apiKey, String apiVal) {
ResultVO resultVO = null;
try {
MediaType MutilPart_Form_Data = MediaType.parse(FORM_PRODUCES);
RequestBody bodyParams = RequestBody.create(MutilPart_Form_Data, JSON.toJSONString(params));
MultipartBody.Builder requestBodyBuilder = new MultipartBody.Builder()
.setType(MultipartBody.FORM);
//.addFormDataPart("key", "", bodyParams);
// 添加表单文件数据
addFormDataPart(requestBodyBuilder, params);
File file = new File(filePath);
requestBodyBuilder.addFormDataPart("file", file.getName(), RequestBody.create(MutilPart_Form_Data, file));
RequestBody requestBody = requestBodyBuilder.build();
Request request = new Request.Builder()
.url(url).addHeader(apiKey, apiVal)
.post(requestBody)
.build();
Response response = OkHttpClientEnum.INSTANCE.getInstance().newCall(request).execute();
String rs = response.body().string();
resultVO = JSON.parseObject(rs, ResultVO.class);
return resultVO;
} catch (Exception e) {
log.error(e.getMessage());
resultVO = new ResultVO(-1, e.getMessage(), null);
return resultVO;
}
}

private static void addFormDataPart(MultipartBody.Builder builder, Map<String, String> params) {
if (null == params || params.size() < 1) {
return;
}
Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator();
Map.Entry<String, String> entry = null;
while (iterator.hasNext()) {
entry = iterator.next();
builder.addFormDataPart(entry.getKey(), entry.getValue());
entry = null;
}

}

public static String postFace(String url, String filePath, Map<String, String> params) {
try {
MediaType MutilPart_Form_Data = MediaType.parse(FORM_PRODUCES);
MultipartBody.Builder requestBodyBuilder = new MultipartBody.Builder()
.setType(MultipartBody.FORM);
// 添加表单文件数据
addFormDataPart(requestBodyBuilder, params);
File file = new File(filePath);
requestBodyBuilder.addFormDataPart("image_file", file.getName(), RequestBody.create(MutilPart_Form_Data, file));
RequestBody requestBody = requestBodyBuilder.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = OkHttpClientEnum.INSTANCE.getInstance().newCall(request).execute();
String rs = response.body().string();
return rs;
} catch (Exception e) {
log.error(e.getMessage());
return null;
}
}

public static void main(String[] args) {
}
}



原文地址:https://www.cnblogs.com/sung1024/p/15594140.html