Ich schreibe eine Funktion, die eine GET-Anforderung an eine Website macht und gibt die Antwort Cookie:Wie bekomme ich den Cookie von einer GET-Antwort?
extern crate futures;
extern crate hyper;
extern crate tokio_core;
use tokio_core::reactor::Core;
use hyper::Client;
use std::error::Error;
use hyper::header::Cookie;
use futures::future::Future;
fn get_new_cookie() -> Result<String, Box<Error>> {
println!("Getting cookie...");
let core = Core::new()?;
let client = Client::new(&core.handle());
println!("Created client");
let uri = "http://www.cnn.com".parse().expect("Cannot parse url");
println!("Parsed url");
let response = client.get(uri).wait().expect("Cannot get url.");
println!("Got response");
let cookie = response
.headers()
.get::<Cookie>()
.expect("Cannot get cookie");
println!("Cookie: {}", cookie);
Ok(cookie)
}
fn main() {
println!("{:?}", get_new_cookie());
}
Dies funktioniert nicht; es ist auf der client.get(...)
Zeichenfolge fest. Die Ausgabe, die ich bekomme, ist:
und danach passiert nichts.
Was mache ich falsch und wie kann ich es ändern, damit es funktioniert?
Wie ist das im Zusammenhang mit Cookies? Das Problem liegt in der Zeile "Antwort loslassen", die überhaupt nicht mit Cookies verknüpft ist. –
Die vom Server zurückgegebenen Cookies befinden sich im Header "Set-Cookie". Der 'Cookie'-Header wird in Anfragen verwendet, um Cookies an den Server zu senden. –