vert.x web client是一个异步的http客户端,可以很容易的发送异步请求,什么是异步呢?简单举例,同步的http请求,如果服务器没有响应就要一直等着.....异步就是还可以干别的。web client还是很好用的而且提供了很多高级功能。

首先引用gradle

dependencies {compile 'io.vertx:vertx-web-client:3.9.2'
}

创建一个web client客户端

WebClient client = WebClient.create(vertx);

如果需要参数可以使用另一个带WebClientOptions的方法,WebClient本身是一个接口,create方法实际是new了一个WebClientBase的实现类。官网例子

//可以设置超时时间,最大重定向数,支持ssl等各种
WebClientOptions options = new WebClientOptions().setUserAgent("My-App/1.2.3");
//这里可以用链式的在上面接着 .setKeepAlive(false)
options.setKeepAlive(false);WebClient client = WebClient.create(vertx, options);

创建好client之后,就可以调用get,post,put,delete等一系列各种方法发送请求,如果不指定请求类型可以调用request()方法,这些方法的实现也都在WebClientBase。每种请求有3个重载方法外加一个xxxAbs方法,如get方法有可分别指定port端口号,host域名,requestURI请求URI的三种,getAbs代表使用绝对路径。

官网例子

// 发送一个get请求 参数端口号,域名,uri
client.get(8080, "myserver.mycompany.com", "/some-uri")    .send(ar -> {if (ar.succeeded()) {// 获得response响应HttpResponse<Buffer> response = ar.result();System.out.println("Received response with status code" + response.statusCode());} else {System.out.println("Something went wrong " + ar.cause().getMessage());}});

client.get得到的是一个HttpRequest<Buffer>对象,可以理解为一个request,调用send就是发送请求,如果是传json参数就sendJson,此外还有sendForm等各种方法。因为是request,所以在send之前我们还可以设置setQueryParam请求参数addQueryParam和putHeader设置请求头。注意!如果是特殊数据请求content-type要和数据对应设置!!

ar是什么呢?是一个AsyncResult<HttpResponse<T>>,可以理解为异步请求返回的处理结果,AsyncResult接口4个方法,result获取结果,cause获取异常,succeed判断请求是否成功,failed判断请求是否失败。注意这里的succeed并不是只有statusCode是200才会进入,401,404,500,只要请求的服务可以正确响应(服务没有挂掉)都可以走到if中,文档中也说了,默认只有网络级别的错误以失败结尾。

如果知道返回结果是json,可以在获取响应后直接转json。

JsonObject jo = response.bodyAsJsonObject();

Vert.x提供了系列bodyAsXXXX转为相应格式的方法解码非常方便,如bodyAsString , bodyAsJsonArray等等。默认返回是Buffer。所以重点,不知道传数据的格式,用sendBuffer,不知道接收数据类型,也用Buffer接收。

问题来了,那么如何发https请求呢?可以在send之前调用ssl(true),或者直接用xxxAbs方法发送请求直接传https路径。

先写到这,如有不对欢迎交流。

vert.x web client发送http https请求相关推荐

  1. Vert.x -- web的介绍(三)

    组件介绍 Vert.x Web 是一系列用于基于 Vert.x 构建 Web 应用的构建模块. 可以把它想象成一把构建现代的.可伸缩的 Web 应用的瑞士军刀. Vert.x Core 提供了一系列底 ...

  2. 十五、Fiddler抓包工具详细教程 — Fiddler抓包HTTPS请求(二)

    ###文章内容有配套的学习视频和笔记都放在了文章末尾### 5.查看证书是否安装成功 方式一: 点击Tools菜单 -> Options... -> HTTPS -> Actions ...

  3. RestTemplate 发送 Https 请求调用

    RestTemplate 发送 Https 请求调用 个人博客:https://jacob.org.cn import org.apache.http.conn.ssl.NoopHostnameVer ...

  4. springboot 使用restTemplate 发送https请求 忽略ssl证书

    最近在写接口的时候给对方回推数据,发送https请求的时候遇到这么个报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.Val ...

  5. JavaWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器

    Servlet入门 MVC实战项目 仓储管理系统 JavaWeb入门介绍 Http协议 Http请求数据格式 Http响应数据格式 Web实战Demo:自定义服务器 对比Https协议 总结 Redi ...

  6. 使用Restlet Client发送各种Get和Post请求

    使用Restlet Client发送各种Get和Post请求 原地址:https://blog.csdn.net/zlp1992/article/details/76706017 在开发web应用时, ...

  7. VS2015编译Poco+openssl,使用Poco发送HTTPS请求

    下载源码.安装Openssl 下载Poco源码 git clone https://github.com/pocoproject/poco.git openssl下载安装: 下载地址:http://s ...

  8. httpf发送 json_Java用HttpClient3发送http/https协议get/post请求,发送map,json,xml,txt数据...

    使用的是httpclient 3.1, 使用"httpclient"4的写法相对简单点,百度:httpclient https post 当不需要使用任何证书访问https网页时, ...

  9. HttpClient 发送 HTTP、HTTPS 请求的简单封装

    序 近期这几周.一直在忙同一个项目.刚開始是了解需求.需求有一定了解之后,就開始调第三方的接口.因为第三方给提供的文档非常模糊,在调接口的时候,出了非常多问题,一直在沟通协调,详细的无奈就不说了,因为 ...

最新文章

  1. Lucene.net中文分词探究
  2. ps aux|grep
  3. Mybatis解析动态sql原理分析
  4. mysql 存储 事务_MYSQL 可以在存储过程里实现事务控制吗
  5. 【Pytorch神经网络基础理论篇】 04 线性代数
  6. 2015 多校赛 第三场 1002 (hdu 5317)
  7. ARTS打卡计划第6周-REVIEW-超越编码的避免项目失败的软技能
  8. “命令终端”的实现2-字符读取及按键控制
  9. SyntaxError: unexpected EOF while parsing成功解决
  10. 疫苗接种率低?不用怕,互联网公司给出解决之道
  11. 开源项目:测试安卓设备摄像头的帧率
  12. Guitar Pro如何新建吉他谱步骤
  13. Vue插件-json编辑器
  14. vue两列数据 合并成一列
  15. 《程序员之禅》一一1.1 我如何学习打坐
  16. 【教程】Gentoo的安装
  17. flash模拟器调全屏_模拟全屏或调暗背景
  18. html5绘制心形图案,HTML5/Canvas 渐变色彩的心形图案
  19. 手机选择之我见——需求分析
  20. 麦克马斯特计算机工程专业,麦克马斯特大学电气与计算机工程申请要求

热门文章

  1. PaddleOCR使用笔记-文字方向分类训练
  2. c++语言取整为什么要加0.5_c++ 取整:四舍五入 向上取整 向下取整
  3. 奇瑞新能源有望迎来下一轮销量增长,奇瑞无界Pro正式上市
  4. CSS 省略号(单行省略号、多行省略号)
  5. css overflow 省略号,图文详解CSS文本溢出显示省略号效果(text-overflow)
  6. Twemproxy 介绍与使用
  7. 游轮航行vr虚拟仿真交互体验
  8. 人工智能不一定都靠“云” 终端也能拥有强大能力
  9. CT剂量及描述方法详细介绍
  10. js函数前面加分号的作用