mica-http的使用指南有哪些

本篇文章為大家展示了mica-http的使用指南有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了巴彥淖爾免費(fèi)建站歡迎大家使用!

mica-http

mica-httpokhttp 的封裝,F(xiàn)luent 語法的 http 工具包,語法參考 HttpClient Fluent API。

使用

maven

<dependency>
  <groupid>net.dreamlu</groupid>
  <artifactid>mica-http</artifactid>
  <version>${version}</version>
</dependency>

gradle

compile("net.dreamlu:mica-http:${version}")

使用文檔

  • 設(shè)定全局日志級別 NONE,BASIC,HEADERS,BODY, 默認(rèn):NONE

HttpRequest.setGlobalLog(LogLevel.BODY);
  • 同步請求 url,方法支持 get、post、patch、put、delete

HttpRequest.get("https://www.baidu.com")
    .log(LogLevel.BASIC)             //設(shè)定本次的日志級別,優(yōu)先于全局
    .addHeader("x-account-id", "mica001") // 添加 header
    .addCookie(new Cookie.Builder()  // 添加 cookie
        .name("sid")
        .value("mica_user_001")
        .build()
    )
    .query("q", "mica") //設(shè)置 url 參數(shù),默認(rèn)進(jìn)行 url encode
    .queryEncoded("name", "encodedValue")
    .formBuilder()    // 表單構(gòu)造器,同類 multipartFormBuilder 文件上傳表單
    .add("id", 123123) // 表單參數(shù)
    .execute()                      // 發(fā)起請求
    .asJsonNode();                  // 結(jié)果集轉(zhuǎn)換,注:如果網(wǎng)絡(luò)異常等會直接拋出異常。
// 同類的方法有 asString、asBytes、asStream
// json 類響應(yīng):asJsonNode、asValue、asList、asMap,采用 jackson 處理
// xml、html響應(yīng):asDocument,asDomValue、asDomList采用的 jsoup 處理
// file 文件:toFile
  • 同步

String html = HttpRequest.post("https://www.baidu.com")
    .execute()
    .onFailed((request, e) -&gt; {// 網(wǎng)絡(luò)等異常情況的消費(fèi)處理,可無
        e.printStackTrace();
    })
    .onResponse(ResponseSpec::asString);// 處理響應(yīng),有網(wǎng)絡(luò)異常等直接返回 null
  • 同步

String text = HttpRequest.patch("https://www.baidu.com")
    .execute()
    .onSuccess(ResponseSpec::asString);
// onSuccess http code in [200..300) 處理響應(yīng),有網(wǎng)絡(luò)異常等直接返回 null
  • 異步請求

HttpRequest.delete("https://www.baidu.com")
    .async() // 開啟異步
    .onFailed((request, e) -&gt; {    // 異常時的處理
        e.printStackTrace();
    })
    .onResponse(responseSpec -&gt; {  // 消費(fèi)響應(yīng), 注意:響應(yīng)的流只能讀一次
        int httpCode = responseSpec.code();

    })
    .onSuccessful(responseSpec -&gt; { // 消費(fèi)響應(yīng)成功 http code in [200..300)
        // 注意:響應(yīng)結(jié)果流只能讀一次
        JsonNode jsonNode = responseSpec.asJsonNode();
    })
    .execute(); // 異步最后發(fā)起請求

示例代碼1

// 設(shè)置全局日志級別
HttpRequest.setGlobalLog(LogLevel.BODY);

// 直接用 jackson json path 語法
private String getUserEmail(String accessToken) {
    return HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&amp;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()                      // 表單構(gòu)造器
        .add("a", "b")
        .async()                            // 使用異步
        .onSuccessful(System.out::println)  // 異步成功時的函數(shù)
        .onFailed((request, e) -&gt; {         // 異步失敗,可無
            e.printStackTrace();
        })
        .execute();
}

示例代碼2

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&amp;$#%"))
    .queryEncoded("abc", Base64Util.encode("123&amp;$#%"))
    .execute()
    .onFailed(((request, e) -&gt; {
        e.printStackTrace();
    }))
    .onSuccess(ResponseSpec::asString);
System.out.println(html);

// 同步調(diào)用,返回 Optional,異常時返回 Optional.empty()
Optional<string> opt = HttpRequest.post(URI.create("https://www.baidu.com"))
    .bodyString("Important stuff")
    .formBuilder()
    .add("a", "b")
    .execute()
    .onSuccessOpt(ResponseSpec::asString);

// 同步,成功時消費(fèi)(處理) response
HttpRequest.post("https://www.baidu.com/some-form")
    .addHeader("X-Custom-header", "stuff")
    .execute()
    .onSuccessful(responseSpec -&gt; {
        String text = responseSpec.asString();
        System.out.println(text);
    });

// 同步,異常時直接拋出
HttpRequest.get("https://www.baidu.com/some-form")
    .execute()
    .asString();

// async,異步執(zhí)行結(jié)果,失敗時打印堆棧
HttpRequest.get("https://www.baidu.com/some-form")
    .async()
    .onSuccessful(System.out::println)
    .onFailed((request, e) -&gt; {
        e.printStackTrace();
    })
    .execute();

上述內(nèi)容就是mica-http的使用指南有哪些,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:mica-http的使用指南有哪些
轉(zhuǎn)載來源:http://muchs.cn/article0/ihgjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站建站公司、云服務(wù)器、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)