伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

mica-http 完全使用指南【一】

来源:本站原创 浏览:122次 时间:2022-10-13
mica-http

mica-http 是 okhttp 的封装,Fluent 语法的 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}")
使用文档

•设定全局日志级别 NONE,BASIC,HEADERS,BODY, 默认:NONE


HttpRequest.setGlobalLog(LogLevel.BODY);


同步请求 url,方法支持 get、post、patch、put、delete


HttpRequest.get("https://www.baidu.com")  .log(LogLevel.BASIC)             //设定本次的日志级别,优先于全局  .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()                      // 发起请求  .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(); // 异步最后发起请求



示例代码1


// 设置全局日志级别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();}
示例代码2


HttpRequest.setGlobalLog(LogLevel.BODY);
// 同步,异常时 返回 nullString 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()Optional<String> opt = HttpRequest.post(URI.create("https://www.baidu.com"))    .bodyString("Important stuff")    .formBuilder()    .add("a", "b")    .execute()    .onSuccessOpt(ResponseSpec::asString);
// 同步,成功时消费(处理) responseHttpRequest.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,异步执行结果,失败时打印堆栈HttpRequest.get("https://www.baidu.com/some-form")    .async()    .onSuccessful(System.out::println)    .onFailed((request, e) -> {        e.printStackTrace();    })    .execute();


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net