Как я могу загрузить содержимое сайта в строку? - PullRequest
0 голосов
/ 24 октября 2018

Я просто хотел бы загрузить веб-сайт и поместить его содержимое в String.

Аналогично тому, как это делается в C #:

WebClient c = new WebClient();
string ex = c.DownloadString("http://url.com");

1 Ответ

0 голосов
/ 24 октября 2018

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: "Привязка Rust к 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 - верный путь (именно поэтому Hyper используется большинством фреймворков Rust Web).

Многие другие!

Я не смогперечислите все доступные библиотеки в этом ответе.Поэтому не стесняйтесь искать в crates.io другие ящики, которые могут вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...