對 okhttp 網絡框架的封裝 easy-okhttp 推薦 國產 網絡工具包

easy-okhttp 詳細介紹html

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

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之下session

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

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();
相關文章
相關標籤/搜索