Я работал над rust-http , который имеет стать де-факто HTTP-библиотекой для Rust (Servo использует ее); это далеко не полный и очень плохо документированный в настоящее время. Вот пример выполнения запроса и выполнения чего-то со статусом:
extern mod http;
use http::client::RequestWriter;
use http::method::Get;
use http::status;
use std::os;
fn main() {
let request = RequestWriter::new(Get, FromStr::from_str(os::args()[1]).unwrap());
let response = match request.read_response() {
Ok(response) => response,
Err(_request) => unreachable!(), // Uncaught condition will have failed first
};
if response.status == status::Ok {
println!("Oh goodie, I got me a 200 OK response!");
} else {
println!("That URL ain't returning 200 OK, it returned {} instead", response.status);
}
}
Запустите этот код с URL-адресом в качестве единственного аргумента командной строки, и он проверит код состояния! [HTTP], нет HTTPS.)
Сравните с src/examples/client/client.rs
для примера, который делает немного больше.
rust-http отслеживает основную ветвь ржавчины. В настоящее время он будет работать в только что выпущенном Rust 0.8, но, скорее всего, скоро будут изменения. На самом деле, никакая версия ржавчины-http не работает на Rust 0.8 - произошли изменения, которые не могут быть обработаны в правилах конфиденциальности непосредственно перед выпуском, оставляя что-то, что ржавчина-http зависит от дополнительного :: url недоступного , С тех пор оно было исправлено, но оно не совместимо с ржавчиной. Rust 0.8.
Что касается вопроса о кодировке строки запроса, в настоящее время это должно быть сделано с помощью extra::url::Query
(typedef для ~[(~str, ~str)]
). Соответствующие функции для конверсий:
extra::url::query_to_str
extra::url::query_from_str
(извините, не могу использовать это просто на данный момент, поскольку он является частным. PR, чтобы сделать его общедоступным. В то же время эта ссылка на самом деле не должна работать, она доступна только из-за https://github.com/mozilla/rust/issues /7476.)