我们在工作中用http协议转调其他接口,但很多时候我们在使用okhttp的工具类的 方法缺少很多,比如文件上传,post,put,delete请求 工具类当中并不完整。有部分又没有请求头,让人很是苦恼。这里自己写一份比较全的okhttp的工具类,来供大家参考。
1、我这里引入的依赖为。
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
2、okhttp的工具类包含 文件上传,get,post,put,delete请求
public class OkHttpClientUtil {
private static Logger logger = LoggerFactory.getLogger(OkHttpClientUtil.class);
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
public static OkHttpClient client;
static {
client = new OkHttpClient.Builder()
.readTimeout(20000, TimeUnit.MILLISECONDS)
.writeTimeout(20000, TimeUnit.MILLISECONDS)
.connectTimeout(20000, TimeUnit.MILLISECONDS)
.build();
}
public static final String doUpload(Map<String, String> params, Map<String, String> headerParam,
final Map<String, File> fileMap, String mediaTypeStr, String url) {
Response response = null;
try {
if (StringUtils.isEmpty(url)) {
return null;
}
if (StringUtils.isEmpty(mediaTypeStr)) {
mediaTypeStr = "application/octet-stream";
}
MediaType mediaType = MediaType.parse(mediaTypeStr);
MultipartBody.Builder multipartBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
for (Map.Entry<String, File> fileEntry : fileMap.entrySet()) {
File file = fileEntry.getValue();
RequestBody fileBody = MultipartBody.create(mediaType, file);
multipartBody.addFormDataPart(fileEntry.getKey(),