这篇来学习下Rest Assured中如何获取响应头和cookies,前面某一篇,我们介绍过如何拿到 响应内容,再做其他操作这条用例,本篇就是在拿到响应内容基础上,再获取headers 和cookies。
1.获取Headers
/**
* 得到响应头
*/
@Test
public void testGetResponseHeaders() {
Response res = get("http://jsonplaceholder.typicode.com/photos");
// 得到一个响应header中字段
String headerCFRAY = res.getHeader("CF-RAY");
System.out.println("CF-RAY: " + headerCFRAY);
// 得到全部的headers
Headers headers = res.getHeaders();
for (Header h : headers) {
System.out.println(h.getName() + ":" + h.getValue());
}
}
运行结果
[RemoteTestNG] detected TestNG version 6.14.3
CF-RAY: 4fb6dafa2a0532e1-HKG
Date:Wed, 24 Jul 2019 15:16:27 GMT
Content-Type:application/json; charset=utf-8
Transfer-Encoding:chunked
Connection:keep-alive
Set-Cookie:__cfduid=dc375e91c76ca96482f7d7e07e691fbc01563981387; expires=Thu, 23-Jul-20 15:16:27 GMT; path=/; domain=.typicode.com; HttpOnly
X-Powered-By:Express
Vary:Origin, Accept-Encoding
Access-Control-Allow-Credentials:true
Cache-Control:public, max-age=14400
Pragma:no-cache
Expires:Wed, 24 Jul 2019 19:16:27 GMT
X-Content-Type-Options:nosniff
Etag:W/"105970-HCYFejK2YCxztz8++2rHnutkPOQ"
Content-Encoding:gzip
Via:1.1 vegur
CF-Cache-Status:HIT
Age:445
Server:cloudflare
CF-RAY:4fb6dafa2a0532e1-HKG
PASSED: testGetResponseHeaders
这个很简单,获取某一个需要Key来获取value,冒号左边就是key,右边就是value,获取多个就是要foreach 集合遍历就行。
2.获取cookies
再来一个cookies的获取的例子。
我们手动在浏览器打开 http://jsonplaceholder.typicode.com/photos
浏览器自带F12工具去看看请求头中的cookies
上面这个只有一个cookies,我们来看看代码如何拿到这个cookies.
/**
* 得到cookies
*/
@Test
public void getCookies() {
Response res = get("http://jsonplaceholder.typicode.com/photos");
Map<String, String> cookies = res.getCookies();
//遍历集合,拿到每一个cookies
for (Map.Entry<String, String> entry : cookies.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
运行结果
[RemoteTestNG] detected TestNG version 6.14.3
__cfduid:d5e86b93acfb5c8e74246613aae27d9231564154045
PASSED: getCookies
这个每次请求的cookies都不一样,和上面红圈的格式是一样的。
3.得到cookies的详细信息
我们还可以得到cookies的详细信息,例如过期时间等,前提是要根据cookie的key去拿到这个cookie的详细信息。
/**
* 得到cookies详细信息
*/
@Test
public void getCookiesDetailsInfo() {
Response res = get("http://jsonplaceholder.typicode.com/photos");
//得到一个详细cookies对象
Cookie c = res.getDetailedCookie("__cfduid");
System.out.println("判断这个cookies是否有过期时间设定: " + c.hasExpiryDate());
System.out.println("打印cookies的过期时间: " + c.getExpiryDate());
System.out.println("判断是否值: " + c.hasValue());
}
得到
[RemoteTestNG] detected TestNG version 6.14.3
判断这个cookies是否有过期时间设定: true
打印cookies的过期时间: Sat Jul 25 23:21:38 CST 2020
判断是否值: true
PASSED: getCookiesDetailsInfo
关于cookies的详细信息,还有一些方法自己可以在上面代码c. 后面弹出的方法补全,看看这些方法的作用。上面我只是介绍了三种方法。