Closed16
Rust で Http Client を使ってみる
とりあえず stars が多いやつ使う戦法
この前 reqwest 使った気がする
今回は hyper 使ってみる
順番に
先走ってるけど、なんか、別のとくみ合わせるらしい?
まずで単体でエラーが出るであろうところまでやる
#[cfg(test)]
mod tests {
extern crate hyper;
use hyper::Client;
#[tokio::test]
async fn https_access() {
let client = Client::new();
let uri = "https://www.google.co.jp/".parse().unwrap();
let resp = client.get(uri).await.unwrap();
println!("status={}", resp.status());
}
}
$ cargo test
.
.
failures:
---- tts::tests::main stdout ----
thread 'tts::tests::main' panicked at 'called `Result::unwrap()` on an `Err` value: hyper::Error(Connect, "invalid URL, scheme is not http")', src/tts/mod.rs:58:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
.
.
同じ現象っぽい
スターがすごく少ない。ほんとにこれを使うのが王道なんだろうか。
root@179a55eea88b:/workspace# cargo test
Compiling openssl-sys v0.9.65
error: failed to run custom build command for `openssl-sys v0.9.65`
Caused by:
process didn't exit successfully: `/workspace/target/debug/build/openssl-sys-efcb7f6a879fe7b1/build-script-main` (exit code: 101)
--- stdout
cargo:rustc-cfg=const_fn
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_DIR
OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=OPENSSL_STATIC
cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
run pkg_config fail: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`: No such file or directory (os error 2)"
--- stderr
thread 'main' panicked at '
Could not find directory of OpenSSL installation, and this `-sys` crate cannot
proceed without this knowledge. If OpenSSL is installed and this crate had
trouble finding it, you can set the `OPENSSL_DIR` environment variable for the
compilation process.
Make sure you also have the development packages of openssl installed.
For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
If you're in a situation where you think the directory *should* be found
automatically, please open a bug at https://github.com/sfackler/rust-openssl
and include information about your system as well as this message.
$HOST = x86_64-unknown-linux-gnu
$TARGET = x86_64-unknown-linux-gnu
openssl-sys = 0.9.65
It looks like you're compiling on Linux and also targeting Linux. Currently this
requires the `pkg-config` utility to find OpenSSL but unfortunately `pkg-config`
could not be found. If you have OpenSSL installed you can likely fix this by
installing `pkg-config`.
', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.65/build/find_normal.rs:174:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
rust-tls 入れようとしたら怒られた
これやっても治らない
この前 reqwest 使ってできたから、そっちを使おうか悩む
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn https_access_requwest() {
let url = String::from("https://www.google.co.jp/");
let client = reqwest::Client::new();
let res = client
.get(&url)
.send()
.await
.unwrap();
assert_eq!(&res.status().as_str()[..], "200");
let body = &res.text().await.unwrap();
assert!(&body.len() > &(100 as usize));
}
}
[dependencies]
.
.
reqwest = "^0.11.4"
とおった
assert_eq!(&res.status().as_str()[..], "200");
文字列周りの所有権の理解が甘いので https://doc.rust-jp.rs/book-ja/ch04-03-slices.html 読み直す
とりあえず通ったので閉じ
このスクラップは2021/06/27にクローズされました