基于OkHttp封装的HttpUtils 2019-04-17

基于okhttp3封装的HttpUtils

HttpUtils


package thread.test.utils;

import com.google.common.collect.Maps;

import okhttp3.*;

import okhttp3.Request.Builder;

import org.apache.commons.collections4.MapUtils;

import org.apache.commons.lang3.StringUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.File;

import java.io.IOException;

import java.util.Map;

import java.util.concurrent.TimeUnit;

/**

* @author: liubowen

* @date: 2019-04-17 11:32

* @description:

*/

public class HttpUtils {

private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);

private static final Long READ_TIMEOUT = 5 * 60 * 1000L;

private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8");

public static String doGet(String url) {

return doGet(url, null);

}

public static String doGet(String url, long readTimeout) {

return doGet(url, null, readTimeout);

}

public static String doGet(String url, Map<String, String> headers) {

return doGet(url, headers, READ_TIMEOUT);

}

public static String doGet(String url, Map<String, String> headers, long readTimeout) {

try {

OkHttpClient okHttpClient = okHttpClient(readTimeout);

Builder builder = okHttpClientBuilder(url, headers);

final Request request = builder.build();

final Call call = okHttpClient.newCall(request);

Response response = call.execute();

ResponseBody body = response.body();

String string = body.string();

return string;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

public static String doPostByFrom(String url) {

return doPostByFrom(url, null);

}

public static String doPostByFrom(String url, long readTimeout) {

return doPostByFrom(url, null, readTimeout);

}

public static String doPostByFrom(String url, Map<String, String> params) {

return doPostByFrom(url, null, params);

}

public static String doPostByFrom(String url, Map<String, String> params, long readTimeout) {

return doPostByFrom(url, null, params, readTimeout);

}

public static String doPostByFrom(String url, Map<String, String> headers, Map<String, String> params) {

return doPostByFrom(url, headers, params, READ_TIMEOUT);

}

public static String doPostByFrom(String url, Map<String, String> headers, Map<String, String> params,

long readTimeout) {

return doPostByFrom(url, headers, params, null, null, null, readTimeout);

}

public static String doPostByFrom(String url, String fileName, File file, MediaType fileType) {

return doPostByFrom(url, fileName, file, fileType, READ_TIMEOUT);

}

public static String doPostByFrom(String url, String fileName, File file, MediaType fileType, long readTimeout) {

return doPostByFrom(url, null, fileName, file, fileType, readTimeout);

}

public static String doPostByFrom(String url, Map<String, String> headers, String fileName, File file,

MediaType fileType, long readTimeout) {

return doPostByFrom(url, headers, null, fileName, file, fileType, readTimeout);

}

public static String doPostByFrom(String url, Map<String, String> headers, Map<String, String> params,

String fileName, File file, MediaType fileType, long readTimeout) {

try {

OkHttpClient okHttpClient = okHttpClient(readTimeout);

Builder builder = okHttpClientBuilder(url, headers);

if (!MapUtils.isEmpty(params)) {

MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);

params.forEach((name, value) -> {

requestBody.addFormDataPart(name, value);

});

if (!StringUtils.isEmpty(fileName) && file != null && fileType != null) {

RequestBody body = RequestBody.create(fileType, file);

String filename = file.getName();

// 参数分别为, 请求key ,文件名称 , RequestBody

requestBody.addFormDataPart(fileName, filename, body);

}

builder.post(requestBody.build());

}

final Request request = builder.build();

final Call call = okHttpClient.newCall(request);

Response response = call.execute();

ResponseBody body = response.body();

String string = body.string();

return string;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

public static String doPostByJson(String url) {

return doPostByJson(url, Maps.newHashMap(), null, READ_TIMEOUT);

}

public static String doPostByJson(String url, long readTimeout) {

return doPostByJson(url, Maps.newHashMap(), null, readTimeout);

}

public static String doPostByJson(String url, String jsonString) {

return doPostByJson(url, Maps.newHashMap(), jsonString, READ_TIMEOUT);

}

public static String doPostByJson(String url, String jsonString, long readTimeout) {

return doPostByJson(url, Maps.newHashMap(), jsonString, readTimeout);

}

public static String doPostByJson(String url, Map<String, String> headers, String jsonString, long readTimeout) {

try {

OkHttpClient okHttpClient = okHttpClient(readTimeout);

Builder builder = okHttpClientBuilder(url, headers);

if (!StringUtils.isEmpty(jsonString)) {

RequestBody requestBody = RequestBody.create(JSON, jsonString);

builder.post(requestBody);

}

final Request request = builder.build();

final Call call = okHttpClient.newCall(request);

Response response = call.execute();

ResponseBody body = response.body();

String string = body.string();

return string;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

private static OkHttpClient okHttpClient(long readTimeout) {

OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder();

// okHttpClientBuilder.connectTimeout(60 * 1000, TimeUnit.MILLISECONDS)

// .readTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)

// .writeTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS);

okHttpClientBuilder.readTimeout(readTimeout, TimeUnit.MILLISECONDS);

OkHttpClient okHttpClient = okHttpClientBuilder.build();

return okHttpClient;

}

private static Builder okHttpClientBuilder(String url, Map<String, String> headers) {

Builder builder = new Builder();

builder.url(url);

if (!MapUtils.isEmpty(headers)) {

headers.forEach((name, value) -> {

builder.addHeader(name, value);

});

}

return builder;

}

}


<dependency>

            <groupId>com.squareup.okhttp3</groupId>

            <artifactId>okhttp</artifactId>

            <version>3.14.1</version>

        </dependency>

        <dependency>

            <groupId>com.google.guava</groupId>

            <artifactId>guava</artifactId>

            <version>27.1-jre</version>

        </dependency>

        <dependency>

            <groupId>org.apache.commons</groupId>

            <artifactId>commons-collections4</artifactId>

            <version>4.3</version>

        </dependency>

        <dependency>

            <groupId>ch.qos.logback</groupId>

            <artifactId>logback-access</artifactId>

            <version>1.2.3</version>

        </dependency>

        <dependency>

            <groupId>ch.qos.logback</groupId>

            <artifactId>logback-classic</artifactId>

            <version>1.2.3</version>

        </dependency>

        <dependency>

            <groupId>org.apache.commons</groupId>

            <artifactId>commons-lang3</artifactId>

            <version>3.9</version>

        </dependency>

本人第一次发贴 希望大家多多指导, 谢谢🙏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 走在寒冬的风霜里,寻找火光这里的夜太漫长,分不清方向我以为陪伴的人还在身旁可是,我再也听不到他们的脚步声严寒已经让...
    不俗小七阅读 6,006评论 36 76
  • 付出的时候,简单粗暴。收回的时候,繁琐复杂——凡事别急着给,就不用花精力去收。花了大部分时间去了解,然后当下...
    依依_c83d阅读 1,414评论 0 0
  • “我是,系统提示名称尚未生成……抱歉,我是红后的一个子系统,求助,求助。” “你在哪,什么红后?你是个机器人?”4...
    深海方碑阅读 2,187评论 0 0
  • 社区工作:陪同社区调查员到城区税务局进行四经普登记。由于机构合并,原先的分支机构均不存在,新的机构按照地域...
    海阔林韵阅读 1,864评论 0 2
  • 最近几天忙着面授课的学习,没有及时的跟着训练营的进度更新学习。昨天睡觉前和早上起来加班学习核聚老师更新的课程内容。...
    37a6b6adef7c阅读 1,103评论 0 0

友情链接更多精彩内容