如何从Rust发出HTTP请求?我在核心图书馆里找不到任何东西.
我不需要解析输出,只需发出请求并判断HTTP响应代码.
如果有人能告诉我如何对我的URL上的查询参数进行URL编码,我会得到额外的奖励!
如何从Rust发出HTTP请求?我在核心图书馆里找不到任何东西.
我不需要解析输出,只需发出请求并判断HTTP响应代码.
如果有人能告诉我如何对我的URL上的查询参数进行URL编码,我会得到额外的奖励!
我一直在研究rust-http,它已经成为用于Rust的de facto HTTP库(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的主分支 目前,它将在刚刚发布的Rust 0.8中工作,但很快可能会出现突破性的变化 一百
至于查询字符串编码问题,目前应该使用extra::url::Query
(~[(~str, ~str)]
的typedef).转换的适当功能:
一百
extra::url::query_from_str
(抱歉,目前无法使用此链接,因为它是私有的.PR将公开它.同时,此链接实际上不应该工作,因为它只有https://github.com/mozilla/rust/issues/7476才可用.)