本篇文章為大家展示了mica-http的使用指南有哪些,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
網站建設哪家好,找創(chuàng)新互聯公司!專注于網頁設計、網站建設、微信開發(fā)、重慶小程序開發(fā)公司、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯還提供了巴彥淖爾免費建站歡迎大家使用!
mica-http
是 okhttp
的封裝,Fluent 語法的 http 工具包,語法參考 HttpClient Fluent API。
net.dreamlu mica-http ${version}
compile("net.dreamlu:mica-http:${version}")
設定全局日志級別 NONE,BASIC,HEADERS,BODY, 默認:NONE
HttpRequest.setGlobalLog(LogLevel.BODY);
同步請求 url,方法支持 get、post、patch、put、delete
HttpRequest.get("https://www.baidu.com") .log(LogLevel.BASIC) //設定本次的日志級別,優(yōu)先于全局 .addHeader("x-account-id", "mica001") // 添加 header .addCookie(new Cookie.Builder() // 添加 cookie .name("sid") .value("mica_user_001") .build() ) .query("q", "mica") //設置 url 參數,默認進行 url encode .queryEncoded("name", "encodedValue") .formBuilder() // 表單構造器,同類 multipartFormBuilder 文件上傳表單 .add("id", 123123) // 表單參數 .execute() // 發(fā)起請求 .asJsonNode(); // 結果集轉換,注:如果網絡異常等會直接拋出異常。 // 同類的方法有 asString、asBytes、asStream // json 類響應:asJsonNode、asValue、asList、asMap,采用 jackson 處理 // xml、html響應:asDocument,asDomValue、asDomList采用的 jsoup 處理 // file 文件:toFile
同步
String html = HttpRequest.post("https://www.baidu.com") .execute() .onFailed((request, e) -> {// 網絡等異常情況的消費處理,可無 e.printStackTrace(); }) .onResponse(ResponseSpec::asString);// 處理響應,有網絡異常等直接返回 null
同步
String text = HttpRequest.patch("https://www.baidu.com") .execute() .onSuccess(ResponseSpec::asString); // onSuccess http code in [200..300) 處理響應,有網絡異常等直接返回 null
異步請求
HttpRequest.delete("https://www.baidu.com") .async() // 開啟異步 .onFailed((request, e) -> { // 異常時的處理 e.printStackTrace(); }) .onResponse(responseSpec -> { // 消費響應, 注意:響應的流只能讀一次 int httpCode = responseSpec.code(); }) .onSuccessful(responseSpec -> { // 消費響應成功 http code in [200..300) // 注意:響應結果流只能讀一次 JsonNode jsonNode = responseSpec.asJsonNode(); }) .execute(); // 異步最后發(fā)起請求
// 設置全局日志級別 HttpRequest.setGlobalLog(LogLevel.BODY); // 直接用 jackson json path 語法 private String getUserEmail(String accessToken) { return HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))") .addHeader("Host", "api.linkedin.com") .addHeader("Connection", "Keep-Alive") .addHeader("Authorization", "Bearer " + accessToken) .execute() .asJsonNode() .at("/elements/0/handle~0/emailAddress") .asText(); } // 異步 public static void test() { HttpRequest.post("https://www.baidu.com/do-stuff") .log(LogLevel.BASIC) // 日志級別 .formBuilder() // 表單構造器 .add("a", "b") .async() // 使用異步 .onSuccessful(System.out::println) // 異步成功時的函數 .onFailed((request, e) -> { // 異步失敗,可無 e.printStackTrace(); }) .execute(); }
HttpRequest.setGlobalLog(LogLevel.BODY); // 同步,異常時 返回 null String html = HttpRequest.get("www.baidu.com") .connectTimeout(Duration.ofSeconds(1000)) .query("test", "a") .query("name", "張三") .query("x", 1) .query("abd", Base64Util.encode("123&$#%")) .queryEncoded("abc", Base64Util.encode("123&$#%")) .execute() .onFailed(((request, e) -> { e.printStackTrace(); })) .onSuccess(ResponseSpec::asString); System.out.println(html); // 同步調用,返回 Optional,異常時返回 Optional.empty() Optionalopt = HttpRequest.post(URI.create("https://www.baidu.com")) .bodyString("Important stuff") .formBuilder() .add("a", "b") .execute() .onSuccessOpt(ResponseSpec::asString); // 同步,成功時消費(處理) response HttpRequest.post("https://www.baidu.com/some-form") .addHeader("X-Custom-header", "stuff") .execute() .onSuccessful(responseSpec -> { String text = responseSpec.asString(); System.out.println(text); }); // 同步,異常時直接拋出 HttpRequest.get("https://www.baidu.com/some-form") .execute() .asString(); // async,異步執(zhí)行結果,失敗時打印堆棧 HttpRequest.get("https://www.baidu.com/some-form") .async() .onSuccessful(System.out::println) .onFailed((request, e) -> { e.printStackTrace(); }) .execute();
上述內容就是mica-http的使用指南有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。