2

我希望能够为下一个请求保留上一个请求的 cookie:

let hyper_client = Client::new();
server_response  = hyper_client.request(Method::Get, url).headers(Headers::new()).send();

假设上面的代码编译,我怎样才能检索到这个会话的 cookie?

4

1 回答 1

1

像这样的东西应该工作:

match server_response.headers.get() {
   Some(&SetCookie(ref content)) => println!("Cookie: {:?}", content),
   _ => println!("No cookie found"),
}

Cookie标头用于发送服务器的 cookie 以及SetCookie服务器发送的 cookie 。我要强调这一点,因为我一开始只看到它,它让我很着迷。Cookie

另外,请注意,我SetCookie只是通过模式匹配的类型推断来请求标头。我也可以使用涡轮鱼:headers.get::<SetCookie>()

如果您需要将相同的 cookie 发送回服务器,您可以SetCookie将响应中的值克隆回Cookie请求的新标头中:

let mut headers = Headers::new();
// if you received cookies in the server response then send the same ones back
if let Some(&SetCookie(ref content)) = server_response.headers.get() {
   headers.set(Cookie(content.clone()));
}

hyper_client.request(Method::Get, url)
    .headers(headers)
    .send();
于 2017-02-25T01:37:00.580 回答