-4 rust
我只想下载一个网站并将其内容放入String.
与在C#中完成的方式类似:
WebClient c = new WebClient();
string ex = c.DownloadString("http://url.com");
Run Code Online (Sandbox Code Playgroud)
Rust 在标准库中没有HTTP功能,因此您可能希望使用另一个crate(库)来为您处理HTTP内容.为此目的有几种不同的板条箱.
reqwest:"更高级别的HTTP客户端库"let body = reqwest::get("http://url.com")?.text()?;
Run Code Online (Sandbox Code Playgroud)
chttp:"实用的HTTP客户端,使用起来很有趣."let mut response = chttp::get("http://url.com").unwrap();
let body = response.body_mut().text().unwrap();
Run Code Online (Sandbox Code Playgroud)
ureq:"最小HTTP请求库"let body = ureq::get("http://url.com")
.call()
.into_string()
.unwrap();
Run Code Online (Sandbox Code Playgroud)
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!");
Run Code Online (Sandbox Code Playgroud)
hyper?Hyper是一个非常流行的HTTP库,但它是异步的而且是相当低级的.这使得用于小脚本的方式太难了.但是,如果你想编写一个HTTP服务器,Hyper确定就行了(这就是大多数Rust Web Frameworks使用Hyper的原因).
我无法在此答案中列出所有可用的库.所以请随意搜索crates.io以获得更多可以帮助您的箱子.