我们使用rest-assured可以获得响应内容,比如:我们发起一个get请求 get("/lotto") 并且获得响应内容,我们有多种方式可以实现:

1 //通过流的方式获得响应内容,在使用完流之后千万不能忘记关闭流

2 InputStream stream = get("/lotto").asInputStream();3 //通过字节数组的方式

4 byte[] byteArray = get("/lotto").asByteArray();5 //字符串

6 String json = get("/lotto").asString();

通过上面的方式我们就可以获得整个响应内容,之前的文章中我们已经介绍过通过JsonPath和XMLPath的方式来获得响应体中的某个值或者某个list,这里就不再介绍这两种方式了,下面来介绍几种别的方式:

1.从已验证的响应体中获得值

我们可以使用extract 方法来从一个已经验证过的响应信息中提取某个值或者仅仅返回response本身的一个实例。这个方法是非常有用的,比如我们想将从响应信息中提取的值传递给后面的请求内容,就可以使用 extract 方法来实现。例如:下面的json会返回一个title 的资源:

1 {2 "title" : "My Title",3 "_links": {4 "self": { "href": "/title"},5 "next": { "href": "/title?page=2"}6 }7 }

我们想验证上面的Json的内容类型(content-type)是否是Json,并且 title 的值是否等于 "My Title",然后我们还想提取 next 字段的值并且用于下面的请求,那么我们就可以这样:

1 //断言验证,并且提取next的值,赋值给nextTitleLink

2 String nextTitleLink =

3 given().4 param("param_name", "param_value").5 when().6 get("/title").7 then().8 contentType(JSON).9 body("title", equalTo("My Title")).10 extract().11 path("_links.next.href");12

13 //使用get方法获取nextTitleLink的值

14 get(nextTitleLink). ..

如果我们想获得多个值,我们也可以返回整个响应体(response):

1 //返回整个响应体

2 Response response =

3 given().4 param("param_name", "param_value").5 when().6 get("/title").7 then().8 contentType(JSON).9 body("title", equalTo("My Title")).10 extract().11 response();12 //取值

13 String nextTitleLink = response.path("_links.next.href");14 String headerValue = response.header("headerName");

2.获取某个路径下的值

如果只是想发起一个请求并且返回某个路径下的值,这里有一个简单的方法:

1 int lottoId = get("/lotto").path("lotto.lottoid");

rest-assured会基于响应体的content-type自动决定是使用JsonPath还是使用XmlPath来解析响应数据,如果content-type没有被定义,rest-assured会尝试寻找默认的解析器。我们也可以通过设置手动决定使用哪一个解析器,可以选择的解析器有xmlPath、jsonPath以及htmlPath,比如:

1 String firstName = post("/greetXML?firstName=John&lastName=Doe").andReturn().xmlPath().getString("firstName");

3.获取头部、cookies以及状态等

我们可以通过下面的方法来header、cookies以及status:

1 Response response = get("/lotto");2

3 //获取所有的响应头信息

4 Headers allHeaders =response.getHeaders();5 //获取指定头部的值

6 String headerName = response.getHeader("headerName");7

8 //获取所有cookies

9 Map allCookies =response.getCookies();10 //获取指定cookie的值

11 String cookieValue = response.getCookie("cookieName");12

13 //获取状态行

14 String statusLine =response.getStatusLine();15 //获取状态码

16 int statusCode = response.getStatusCode();

4.多值headers和cookies

同一个header和cookie可能会包含多个值

4.1 多值headers

要获取同一个header的所有值,首先需要从 Response 对象中获得 Headers 对象,然后从 Headers 实例中通过 Headers.getValues() 方法可以获得所有的值(values),Header.getValues() 方法返回一个包含所有header值的List。

1 //首先获得 response 对象

2 Response response = get("/lotto");3

4 //然后从response实例中获得headers对象

5 Headers headers =response.getHeaders();6

7 //最后从headers对象中获得包含所有cookies值的list

8 List values = headers.getValues();

4.2 多值cookies

要获取同一个cookie的所有值,首先需要从 Response 对象中获得 cookies 对象,然后从 cookiess 实例中通过 cookies.getValues() 方法可以获得所有的值(values),cookies.getValues() 方法返回一个包含所有cookie值的List。

5.详细Cookies

如果我们想要获得cookie的路径、过期时间等详细信息,那我们就需要从rest-assured中获得详细的cookie。我们可以使用 Response.getDetailedCookie(java.lang.String) 方法来获得详细的cookie,这个cookie就包含了cookie的所有属性。

1 //获得指定cookie名称的cookie对象

2 Cookie cookie = response.getDetailedCookie("cookieName");3 //获得cookie的Domain值

4 String domain =cookie.getDomain();5 //获得cookie的有效时间

6 Date expiryDate =cookie.getExpiryDate();7 //获得cookie的最大存活时间

8 int maxAge =cookie.getMaxAge();9 //获得cookie的名称

10 String name =cookie.getName();11 //获得cookie的路径

12 String path =cookie.getPath();

1 //获得所有cookies的详细信息

2 Cookies cookies = response.getDetailedCookies();

java-assured_rest-assured之获取响应数据(Getting Response Data)相关推荐

  1. rest-assured之获取响应数据(Getting Response Data)

    我们使用rest-assured可以获得响应内容,比如:我们发起一个get请求 get("/lotto") 并且获得响应内容,我们有多种方式可以实现: 1 // 通过流的方式获得响 ...

  2. java 请求url 返回数据_java后台发起get请求获取响应数据|chu

    本文实例为大家分享了java后台发起get请求获取响应数据,供大家参考,具体内容如下 学习记录: 话不多说直接上代码: package com.jl.chromeTest; import java.i ...

  3. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...

  4. java获取response数据_Java中实现Http请求并获取响应数据

    前言 在演示的功能代码中使用的请求http地址为:http://timor.tech/api/holiday/year/ 接口说明:获取指定年份或年月份的所有节假日信息.默认返回当前年份的所有信息. ...

  5. Response设置响应数据、Response完成重定向(对比 forword)、路径问题、Response响应字符数据、Response响应字节数据

    文章目录 Response Response 设置响应数据功能介绍 Response 完成重定向 与请求转发(forword)对比 路径问题 Response 响应字符数据 Response 响应字节 ...

  6. java getreader_java后台发起get请求获取响应数据学习记录: 话不多说直接上代码

    : package com.jl.chromeTest; import java.io.BufferedReader; import java.io.InputStreamReader; import ...

  7. Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)

    (1)maven 依赖: <!-- HttpClinet 核心包 --> <dependency><groupId>org.apache.httpcomponent ...

  8. java读取打包时间_Java获取响应的日期时间,这样写是否合理?

    在java中,这样获取响应的时间是否合理? /** * 获取当前日期指定几个月前的日期 * @return */ public static Date getNMonthBefore(int amou ...

  9. 网络编程(发送get和post请求到服务器端,并获取响应)

    一:B/S结构,浏览器端到服务器端通信依赖http协议 交互过程: 1:在浏览器地址栏输入http://ip:port/应用/资源路径 2:浏览器根据ip和服务器建立连接,port确定和那个应用进行交 ...

  10. Qt|Http笔记-两种方式发送http协议数据,获取服务器数据(GET方法)

    目录 背景 演示 搭建Java Web环境 QTcpSocket获取服务器数据 QNetworkAccessManager获取服务器数据 背景 Qt中有2个方式可以实现HTTP协议的发送,一个是使用Q ...

最新文章

  1. Project Euler 1-25
  2. progressdialog的setProgress没反应
  3. Ansible-Playbook-template算数运算以及流程控制
  4. 【示例】Lucene创建索引库编程步骤
  5. 新视野教育计算机题库,校园网.新视野教育计算机等级考试《二级公共基础》课后习题答案...
  6. luogu3810 【模板】三维偏序(陌上花开)
  7. 图解Android事件传递之ViewGroup篇
  8. 清理垃圾代码bat_来买个小内存u盘么咯?盘内带电脑垃圾清理.bat那种丨heibai.org...
  9. qq浏览器私密空间在哪 具体操作步骤
  10. 信息学奥赛一本通(1028:字符菱形)
  11. Landsat9卫星简介
  12. 网络编程核心概念与模式
  13. exchange 2010部署之一
  14. python实现自动开机_python自动循环定时开关机(非重启)测试
  15. Go语言在大数据时代应用前景
  16. 台式计算机加固态硬盘,台式电脑加固态硬盘教程_固态硬盘台式机安装方法-win7之家...
  17. win7开机密码_win7忘记开机密码怎样才能打开电脑?别再用那些错误的方法了
  18. linux中dd命令写入数据,Linux中dd命令的用法
  19. 基于胜任力模型为集团企业构建动态信息安全培训课程体系
  20. Verilog专题(十六)移位寄存器(逻辑移位、算术移位、循环移位)

热门文章

  1. 手机上最好用的五笔输入法_远程输入法,用电脑键盘给手机打字,省蓝牙键盘钱了...
  2. getchar函数详解看这一篇就够了-C语言(函数功能、使用、返回值)
  3. Ubuntu 桌面美化教程
  4. 管理信息系统需求调研分析指南
  5. 大屏制作 | 完成一个美观大屏到底多简单?四步完成
  6. Java Static关键字详解
  7. 计算机专业技能考核方案,计算机专业技能课教学考核方案
  8. css的sprites什么意思,CSS Sprites是什么
  9. django LookUp
  10. 4.(地图数据篇)nginx代理地图服务--离线部署地图服务