easy-okhttp對(duì) okhttp 網(wǎng)絡(luò)框架的封裝
# easy-okhttp
easy-okhttp是對(duì)okhttp3上層封裝的網(wǎng)絡(luò)框架,支持文件上傳和下載表單提交(文件和一個(gè)參數(shù)對(duì)應(yīng)多值),鏈?zhǔn)秸{(diào)用,并且默認(rèn)整合Gson,對(duì)返回結(jié)果多種轉(zhuǎn)換,同時(shí)還支持HTTPS單向認(rèn)證和雙向認(rèn)證等特性。
okhttp3網(wǎng)絡(luò)框架的流行始于Android,但是在Java后端仍然是Apache HttpClient網(wǎng)絡(luò)框架,這個(gè)框架的缺點(diǎn)在于設(shè)計(jì)非常的復(fù)雜,而且Jar包比較大。因此封裝easy-okhttp網(wǎng)絡(luò)框架是降低對(duì)網(wǎng)絡(luò)操作的難度,更是希望棄用Apache HttpClient,其次也是為了幫助 okhttp3 的推廣。
框架特性
- 僅支持GET和POST兩種方式,其他如PUT等不太常用,就暫不支持
- 基于POST的大文本數(shù)據(jù)、二進(jìn)制文件上傳,即通過Http Body提交
- 表單提交,帶有文件的表單提交和表單提交支持參數(shù)名重復(fù),在后臺(tái)接收到的是數(shù)組或集合
- 支持session保持
- 對(duì)HTTPS支持單向認(rèn)證和雙向認(rèn)證
- 支持同步請(qǐng)求和異步請(qǐng)求,統(tǒng)一的數(shù)據(jù)處理接口
- 開箱即用,默認(rèn)的配置基本上滿足需求
框架引入
Maven之下
<dependency>
<groupId>com.mzlion</groupId>
<artifactId>easy-okhttp</artifactId>
<version>1.0.0-Final</version>
</dependency>
Gradle之下
compile 'com.mzlion:easy-okhttp:1.0.7-beta'
用法示例
1.普通的GET請(qǐng)求無參數(shù)
String responseData = HttpClient
.get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect")
// 請(qǐng)求方式和請(qǐng)求url .execute()
.asString();
2.普通的GET請(qǐng)求帶參數(shù)
String responseData = HttpClient
.get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect")
//請(qǐng)求方式和請(qǐng)求url
.queryString("username","mzlion") //設(shè)置請(qǐng)求參數(shù)
.execute()
.asString();
3.POST普通表單提交
String responseData = HttpClient
.post("http://localhost:8080/okhttp-server-test/userInfo/create")
//請(qǐng)求方式和請(qǐng)求url
.param("username","mzlion") // 表單參數(shù)
.param("userPwd", "123") // 表單參數(shù)
//queryString("queryTime","20160530") //url參數(shù)
.execute()
.asString();
//formParam()重載方法還支持`Map`
4.POST提交String
String responseData = HttpClient
.textBody("http://localhost:8080/okhttp-server-test/userInfo/create")
// 請(qǐng)求方式和請(qǐng)求url
.json("{\"username\":\"mzlion\",\"userPwd\":\"123\"}")
// post提交json
//.xml("")
//post提交xml
//.html("function fun(){}")
//post提交html
//.charset("utf-8")
//設(shè)置編碼
.execute()
.asString();
5.POST提交二進(jìn)制文件
String responseData = HttpClient
.binaryBody("http://localhost:8080/okhttp-server-test/userInfo/avatar")
// 請(qǐng)求方式和請(qǐng)求url
.stream(this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"))
// post提交流
//.file(new File("d:/andy-bao.jpg")) //post提交文件
.contentType(ContentType.IMAGE_JPG)
//設(shè)置請(qǐng)求內(nèi)容類型
.execute()
.asString();
//ContentType內(nèi)置常見的MIME類型,基本上不用自己創(chuàng)建了
6.POST表單提交含文件上傳
String responseData = HttpClient
.formDataPost("http://localhost:8080/okhttp-server-test/userInfo/createWithFile")
//請(qǐng)求方式和請(qǐng)求url
.param("userName", "test")
.param("userPwd", "123456")
.param("nickName", "Test")
.param("realName", "測(cè)試")
.param("hobby", "測(cè)試,就愛測(cè)試")
.param("avatarFile", this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"), "andy-bao.jpg")
//.formParam("avatarFile", this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"), "andy-bao.jpg")
.execute()
.asString();
//formParam()重載方法還支持`Map`
7.自定義簽名網(wǎng)站https訪問
>自簽名網(wǎng)站htts訪問處理方式非常簡(jiǎn)單,首先拿到客戶端的簽名證書,一般通過瀏覽器就可以導(dǎo)出xxx.cer證書了。然后將拿到的證書文件拷貝到自己的項(xiàng)目中,然后按照如下方式調(diào)用或設(shè)置。
String responseData = HttpClient.get()
//設(shè)置請(qǐng)求方式
.url("https://kyfw.12306.cn/otn/")
//設(shè)置請(qǐng)求地址
.readTimeout(30000) //覆蓋設(shè)置,讀取超時(shí)時(shí)間
.https(this.getClass().getClassLoader().getResourceAsStream("SRCA.cer"))
.execute() //執(zhí)行
.asString();評(píng)論
圖片
表情
