基于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();

// 參數(shù)分別為, 請求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>

本人第一次發(fā)貼 希望大家多多指導(dǎo)勺良, 謝謝??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逝变,一起剝皮案震驚了整個濱河市嗤瞎,隨后出現(xiàn)的幾起案子欧引,更是在濱河造成了極大的恐慌,老刑警劉巖倔韭,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件术浪,死亡現(xiàn)場離奇詭異,居然都是意外死亡寿酌,警方通過查閱死者的電腦和手機胰苏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醇疼,“玉大人硕并,你說我怎么就攤上這事⊙砭#” “怎么了倔毙?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乙濒。 經(jīng)常有香客問我陕赃,道長,這世上最難降的妖魔是什么颁股? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任凯正,我火速辦了婚禮,結(jié)果婚禮上豌蟋,老公的妹妹穿的比我還像新娘廊散。我一直安慰自己,他們只是感情好梧疲,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布允睹。 她就那樣靜靜地躺著,像睡著了一般幌氮。 火紅的嫁衣襯著肌膚如雪缭受。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天该互,我揣著相機與錄音米者,去河邊找鬼。 笑死宇智,一個胖子當著我的面吹牛蔓搞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播随橘,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼喂分,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了机蔗?” 一聲冷哼從身側(cè)響起蒲祈,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤甘萧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梆掸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扬卷,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年酸钦,在試婚紗的時候發(fā)現(xiàn)自己被綠了怪得。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡钝鸽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庞钢,到底是詐尸還是另有隱情拔恰,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布基括,位于F島的核電站颜懊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏风皿。R本人自食惡果不足惜河爹,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桐款。 院中可真熱鬧咸这,春花似錦、人聲如沸魔眨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遏暴。三九已至侄刽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朋凉,已是汗流浹背州丹。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杂彭,地道東北人墓毒。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像亲怠,于是被迫代替她去往敵國和親蚁鳖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 走在寒冬的風(fēng)霜里赁炎,尋找火光這里的夜太漫長醉箕,分不清方向我以為陪伴的人還在身旁可是钾腺,我再也聽不到他們的腳步聲嚴寒已經(jīng)讓...
    不俗小七閱讀 1,982評論 36 76
  • 付出的時候,簡單粗暴讥裤。收回的時候放棒,繁瑣復(fù)雜——凡事別急著給,就不用花精力去收己英〖涿花了大部分時間去了解,然后當下...
    依依_c83d閱讀 179評論 0 0
  • “我是损肛,系統(tǒng)提示名稱尚未生成……抱歉厢破,我是紅后的一個子系統(tǒng),求助治拿,求助摩泪。” “你在哪劫谅,什么紅后见坑?你是個機器人?”4...
    深海方碑閱讀 278評論 0 0
  • 社區(qū)工作:陪同社區(qū)調(diào)查員到城區(qū)稅務(wù)局進行四經(jīng)普登記捏检。由于機構(gòu)合并荞驴,原先的分支機構(gòu)均不存在,新的機構(gòu)按照地域...
    海闊林韻閱讀 282評論 0 2
  • 最近幾天忙著面授課的學(xué)習(xí)贯城,沒有及時的跟著訓(xùn)練營的進度更新學(xué)習(xí)熊楼。昨天睡覺前和早上起來加班學(xué)習(xí)核聚老師更新的課程內(nèi)容。...
    37a6b6adef7c閱讀 110評論 0 0