okhttp 網絡框架的封裝 easy-okhttp

easy-okhttp是對okhttp3上層封裝的網絡框架,支持文件上傳和下載表單提交(文件和一個參數對應多值),鏈式調用,並且默認整合Gson,對返回結果多種轉換,同時還支持HTTPS單向認證和雙向認證等特性。

okhttp 網絡框架的封裝 easy-okhttp

okhttp3網絡框架的流行始於Android,但是在Java後端仍然是Apache HttpClient網絡框架,這個框架的缺點在於設計非常的複雜,而且Jar包比較大。因此封裝easy-okhttp網絡框架是降低對網絡操作的難度,更是希望棄用Apache HttpClient,其次也是為了幫助 okhttp3 的推廣。

框架特性

  • 僅支持GET和POST兩種方式,其他如PUT等不太常用,就暫不支持
  • 基於POST的大文本數據、二進制文件上傳,即通過Http Body提交
  • 表單提交,帶有文件的表單提交和表單提交支持參數名重複,在後臺接收到的是數組或集合
  • 支持session保持
  • 對HTTPS支持單向認證和雙向認證
  • 支持同步請求和異步請求,統一的數據處理接口
  • 開箱即用,默認的配置基本上滿足需求

框架引入

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請求無參數

 String responseData = HttpClient
.get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect")
// 請求方式和請求url .execute()
.asString();

2.普通的GET請求帶參數

String responseData = HttpClient
.get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect")
//請求方式和請求url
.queryString("username","mzlion") //設置請求參數
.execute()
.asString();

3.POST普通表單提交

String responseData = HttpClient
.post("http://localhost:8080/okhttp-server-test/userInfo/create")
//請求方式和請求url
.param("username","mzlion") // 表單參數
.param("userPwd", "123") // 表單參數

//queryString("queryTime","20160530") //url參數
.execute()
.asString();
//formParam()重載方法還支持`Map`

4.POST提交String

String responseData = HttpClient
.textBody("http://localhost:8080/okhttp-server-test/userInfo/create")
// 請求方式和請求url
.json("{"username":"mzlion","userPwd":"123"}")
// post提交json
//.xml("")
//post提交xml
//.html("function fun(){}")
//post提交html
//.charset("utf-8")
//設置編碼
.execute()
.asString();

5.POST提交二進制文件

 String responseData = HttpClient
.binaryBody("http://localhost:8080/okhttp-server-test/userInfo/avatar")
// 請求方式和請求url
.stream(this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"))
// post提交流
//.file(new File("d:/andy-bao.jpg")) //post提交文件
.contentType(ContentType.IMAGE_JPG)
//設置請求內容類型
.execute()
.asString();
//ContentType內置常見的MIME類型,基本上不用自己創建了

6.POST表單提交含文件上傳

String responseData = HttpClient
.formDataPost("http://localhost:8080/okhttp-server-test/userInfo/createWithFile")

//請求方式和請求url
.param("userName", "test")
.param("userPwd", "123456")
.param("nickName", "Test")
.param("realName", "測試")
.param("hobby", "測試,就愛測試")
.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.自定義簽名網站https訪問

>自簽名網站htts訪問處理方式非常簡單,首先拿到客戶端的簽名證書,一般通過瀏覽器就可以導出xxx.cer證書了。然後將拿到的證書文件拷貝到自己的項目中,然後按照如下方式調用或設置。

 String responseData = HttpClient.get() 
//設置請求方式
.url("https://kyfw.12306.cn/otn/")
//設置請求地址
.readTimeout(30000) //覆蓋設置,讀取超時時間
.https(this.getClass().getClassLoader().getResourceAsStream("SRCA.cer"))
.execute() //執行
.asString();


分享到:


相關文章: