我希望能够保留前一个请求的cookie以用于下一个请求:
let hyper_client = Client::new();
server_response = hyper_client.request(Method::Get, url).headers(Headers::new()).send();
假设上面的代码编译,我怎么能检索这个会话的cookie?
答案 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();