<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          easy-okhttp對(duì) okhttp 網(wǎng)絡(luò)框架的封裝

          聯(lián)合創(chuàng)作 · 2023-09-29 07:56

          # 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();
          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97青娱乐在线观看视频网站 | 无码无码无码 | 在线免费观看视频黄 | 日本不卡视屏 | 中文字幕第31页 |