使用Hyper在事务之间保持cookie

时间:2017-02-24 14:28:11

标签: cookies rust session-cookies hyper

我希望能够保留前一个请求的cookie以用于下一个请求:

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

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

1 个答案:

答案 0 :(得分: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();