我只想下载一个网站并将其内容放入String
。
类似于在C#中的完成方式:
WebClient c = new WebClient();
string ex = c.DownloadString("http://url.com");
答案 0 :(得分:5)
Rust在标准库中没有没有HTTP功能,因此您可能希望使用其他板条箱(库)为您处理HTTP内容。有几个不同的板条箱用于此目的。
reqwest
:“高级HTTP客户端库” let body = reqwest::get("http://url.com")?.text()?;
chttp
:“有趣的实用HTTP客户端。” let mut response = chttp::get("http://url.com").unwrap();
let body = response.body_mut().text().unwrap();
ureq
:“最小HTTP请求库” let body = ureq::get("http://url.com")
.call()
.into_string()
.unwrap();
curl
:“与libcurl绑定以发出HTTP请求” use curl::easy::Easy;
// First write everything into a `Vec<u8>`
let mut data = Vec::new();
let mut handle = Easy::new();
handle.url("http://url.com").unwrap();
{
let mut transfer = handle.transfer();
transfer.write_function(|new_data| {
data.extend_from_slice(new_data);
Ok(new_data.len())
}).unwrap();
transfer.perform().unwrap();
}
// Convert it to `String`
let body = String::from_utf8(data).expect("body is not valid UTF8!");
hyper
?Hyper是一个非常流行的HTTP库,但是它是异步的并且相当底层。这使得小脚本难以使用。但是,如果要编写HTTP服务器,则必须使用Hyper(当然)(这就是大多数Rust Web Framework使用Hyper的原因)。
我无法在此答案中列出所有可用的库。因此,随时可以在crates.io上搜索更多可以帮助您的箱子。