基于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>

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

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