拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何从Apache HttpClient响应中获取Cookie

如何从Apache HttpClient响应中获取Cookie

白鹭 - 2021-11-24 638 0 0

1.概述

在这个简短的教程中,我们将看到如何从Apache HttpClient响应中获取cookie。

首先,我们将展示如何使用HttpClient请求发送自定义cookie。然后,我们将看到如何从响应中获取它。

请注意,此处提供的代码示例基于HttpClient 4.3.x及更高版本,因此它们不适用于较早版本的API。

2.在请求中发送Cookie

在从响应中获取Cookie之前,我们需要创建它并在请求中发送它:

BasicCookieStore cookieStore = new BasicCookieStore();

 BasicClientCookie cookie = new BasicClientCookie("custom_cookie", "test_value");

 cookie.setDomain("baeldung.com");

 cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");

 cookie.setPath("/");

 cookieStore.addCookie(cookie);



 HttpClientContext context = HttpClientContext.create();

 context.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);



 try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

 try (CloseableHttpResponse response = httpClient.execute(new HttpGet("http://www.baeldung.com/"), context)) {

 //do something with the response

 }

 }

首先,我们创建一个基本的cookie存储和一个基本的cookie,其名称为custom_cookie和值test_value 。然后,我们创建一个将保存cookie存储HttpClientContext最后,我们将创建的上下文作为参数传递给execute()方法。

3.访问Cookies

现在,我们已经在请求中发送了一个自定义cookie,让我们看看如何从响应中读取它:

HttpClientContext context = HttpClientContext.create();

 context.setAttribute(HttpClientContext.COOKIE_STORE, createCustomCookieStore());



 try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

 try (CloseableHttpResponse response = httpClient.execute(new HttpGet(SAMPLE_URL), context)) {

 CookieStore cookieStore = context.getCookieStore();

 Cookie customCookie = cookieStore.getCookies()

 .stream()

 .peek(cookie -> log.info("cookie name:{}", cookie.getName()))

 .filter(cookie -> "custom_cookie".equals(cookie.getName()))

 .findFirst()

 .orElseThrow(IllegalStateException::new);



 assertEquals("test_value", customCookie.getValue());

 }

 }

要从响应中获取我们的自定义cookie,我们必须首先从context中获取cookie存储。然后,我们使用getCookies方法获取cookie列表。然后,我们可以利用Java流对其进行迭代并搜索我们的cookie。此外,我们记录了商店中的所有cookie名称:

[main] INFO cbhcHttpClientGettingCookieValueTest - cookie name:__cfduid

 [main] INFO cbhcHttpClientGettingCookieValueTest - cookie name:custom_cookie

4.结论

在本文中,我们学习了如何从Apache HttpClient响应中获取cookie。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *