日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...

發布時間:2025/3/20 编程问答 34 豆豆

easy-okhttp

簡介

項目easy-okhttp是對okhttp網絡框架(https://github.com/square/okhttp)上層封裝,

支持文件上傳和下載,表單(含文件)提交,鏈式調用,支持HTTPS和自定義簽名證書等特性。

okhttp網絡框架的流行始于Android,但是在Java后端仍然是Apache HttpClient網絡框架,這個框架的缺點在于設計非常的復雜,而且Jar的比較大。

故此我封裝okhttp主要目的希望棄用Apache HttpClient;其次也是為了幫助okhttp的推廣^_^

PS:本人Java技術水平中等,還在不斷的學習中,所以項目難免存在bug,所以當出現問題的時候,請大家把問題共享出來,我會盡快處理,抑或我們一起討論也可以的。

共享自己碰到的問題,方便你我他,也使得這個項目就會更加的富有生命力,謝謝!

參考與依賴

依賴關系說明

okhttp,本項目核心所在,底層依賴了okio框架,框架的大小在500Kb之內

mzlion-core,項目依賴的工具類,底層依賴了slf4j-api和gson兩個框架,框架的大小在400Kb之內

聯系方式

用法

框架引入

項目基于Gradle管理,并且項目要已經上傳到JCenter。

MAVEN

jcenter

bintray jcenter

http://jcenter.bintray.com/

true

com.mzlion

easy-okhttp

1.0.1-beta

Gradle

compile 'com.mzlion:easy-okhttp:1.0.1-beta'

下載

支持功能說明

GET和POST請求

基于POST的大文本數據、二進制文件上傳,即通過Http Body提交

普通的表單提交

帶有文件表單提交

表單提交支持參數名重復,在后臺接收到的是數組或集合

支持session保持

支持鏈式調用

支持可信任證書和自定義簽名證書的https訪問

更多特性增加中

全局配置(可選)

框架會自動讀取classpath下的easy-okhttp.properties配置文件,該配置文件包含如下配置信息

okhttp.connectionTimeout 連接超時時間,默認設置10秒

okhttp.readTimeout 內容讀取超時時間,默認是30秒

如果需要更改這些默認配置,有兩種方式

覆蓋框架提供的配置easy-okhttp.properties,框架優先加載項目中的配置文件

通過代碼設置全局配置,下面會講解到

通過代碼也可以設置全局參數,該配置操作只需要操作一次,因而可以放在項目啟動時配置。

設置連接超時時間 HttpClient.INSTANCE.setConnectionTimeout(int)

設置讀取超時時間 HttpClient.INSTANCE.setReadTimeout(int)

設置自定義簽名證書 HttpClient.INSTANCE.setCertificates(?)

設置默認Header HttpClient.INSTANCE.setDefaultHeader(String,String)

示例

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

.formParam("username","mzlion") // 表單參數

.formParam("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("<?xml version=\"1.0\" encoding=\"utf-8\" ?>")

//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

.formParam("userName", "test")

.formParam("userPwd", "123456")

.formParam("nickName", "Test")

.formParam("realName", "測試")

.formParam("hobby", "測試,就愛測試")

.formParam("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.HttpResponse對象介紹

HttpResponse類是對請求服務端的結果封裝,包含了3個屬性

isSuccess 表示請求是否成功

errorMessage 請求失敗時錯誤消息

rawResponse 原始的Response,當框架提供的功能無法滿足時候,可以調用該屬性處理。

當請求執行完成之后一定需要判斷請求成功還是失敗。

HttpResponse類提供對請求服務端的結果轉換方法

默認的請求響應結果并不能直接參與編程,一般都需要經過一些轉換,所以HttpResponse對象提供了幾種常見的轉換,下面直接通過示例解釋各個方法的作用和應用。

注意:當使用轉換方法之前,最好調用方法isSuccess()判斷請求響應是否成功,否則直接調用轉換方法的話,如果響應失敗,則會拋出'HttpClientException'異常

//將響應結果轉為字符串輸出

String responseData = httpResponse.asString();

//將響應結果轉為文件保存

File frc = new File("d:\\web\\save.txt");

httpResponse.asFile(frc);

//json轉換器

List personList = httpResponse.asBean(new TypeToken>(){});

//重載方法

//Person person = httpResponse.asBean(Person.class);

//將響應結果轉為輸出流中

ByteArrayOutputStream baos = new ByteArrayOutputStream();

httpResponse.asStream(baos);

高級配置

為單個請求設置超時

當我們需要對單個請求設置連接超時時間、讀取超時時間等屬性時,可以在執行execute方法之前調用。主要有如下幾個方法可以進行調用。

connectionTimeout(int) 連接超時時間

readTimeout(int) 讀取超時時間

certificates([]) 自定義簽名證書設置

以上這些方法的調用會使得框架創建一個新的OkHttpClient對象。下面給出一個snippet加以說明。

//字符串轉換器

String responseData = HttpClient.get() //設置請求方式

.url("http://localhost:8080/okhttp-server-test/userInfo/avatar2") //設置請求地址

.queryString("id","2") //設置請求參數

.readTimeout(30000) //覆蓋設置,讀取超時時間

.execute() //執行

.asString();

自定義簽名網站https訪問

信任指定的自簽名證書網站

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

//字符串轉換器

String responseData = HttpClient.get() //設置請求方式

.url("http://localhost:8080/okhttp-server-test/userInfo/avatar2") //設置請求地址

.queryString("id","2") //設置請求參數

.readTimeout(30000) //覆蓋設置,讀取超時時間

.certificates(this.getClass().getClassLoader().getResourceAsStream("SRCA.cer"))

.execute() //執行

.asString();

信任所有網站

該方法不推薦在生產環境使用,否則https的作用意義就失效了。信任所有網站的https訪問設置非常簡單,HttpClient.INSTANCE.setCertificates()即可。

關于demo

目前Demo還沒完成,完成之后也會上傳,方便大家直接把項目clone下來即可運行。

總結

以上是生活随笔為你收集整理的okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。