mirror of
https://gitee.com/openharmony/commonlibrary_rust_ylong_http
synced 2024-10-06 21:03:44 +00:00
添加外部 toml, 修复 sync connect 报错
Signed-off-by: 张建辛 <zhangjianxin23@huawei.com>
This commit is contained in:
parent
e716c481ee
commit
6e432bcb7e
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
target
|
||||
/Cargo.lock
|
7
Cargo.toml
Normal file
7
Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = [
|
||||
# web
|
||||
"ylong_http",
|
||||
"ylong_http_client",
|
||||
]
|
@ -15,28 +15,54 @@
|
||||
|
||||
use ylong_http_client::async_impl::{Client, Downloader};
|
||||
use ylong_http_client::util::Redirect;
|
||||
use ylong_http_client::{Certificate, Request};
|
||||
use ylong_http_client::{Certificate, Request, TlsVersion};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
fn main() {
|
||||
let rt = tokio::runtime::Builder::new_multi_thread()
|
||||
.enable_all()
|
||||
.build()
|
||||
.expect("Tokio runtime build err.");
|
||||
let mut v = vec![];
|
||||
for _i in 0..1 {
|
||||
let handle = rt.spawn(req());
|
||||
v.push(handle);
|
||||
}
|
||||
|
||||
rt.block_on(async move {
|
||||
for h in v {
|
||||
let _ = h.await;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async fn req() {
|
||||
let v = include_bytes!("./test.pem");
|
||||
let cert = Certificate::from_pem(v);
|
||||
// Creates a `async_impl::Client`
|
||||
let client = Client::builder()
|
||||
.redirect(Redirect::default())
|
||||
.tls_built_in_root_certs(true) // default true
|
||||
.max_tls_version(TlsVersion::TLS_1_2)
|
||||
.min_tls_version(TlsVersion::TLS_1_2)
|
||||
.add_root_certificate(cert.unwrap())
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
// Creates a `Request`.
|
||||
let request = Request::get("https://www.huawei.com")
|
||||
let request = Request::get(
|
||||
"https://www.baidu.com",
|
||||
// "https://app.prntscr.com/build/setup-lightshot.exe",
|
||||
)
|
||||
.body("".as_bytes())
|
||||
.unwrap();
|
||||
|
||||
// Sends request and receives a `Response`.
|
||||
let response = client.request(request).await;
|
||||
assert!(response.is_ok());
|
||||
let response = client.request(request).await.unwrap();
|
||||
// assert!(response.is_ok());
|
||||
|
||||
println!("{}", response.status().as_u16());
|
||||
println!("{}", response.headers());
|
||||
|
||||
// Reads the body of `Response` by using `BodyReader`.
|
||||
let _ = Downloader::console(response.unwrap()).download().await;
|
||||
let _ = Downloader::console(response).download().await;
|
||||
}
|
||||
|
@ -85,8 +85,8 @@ pub(crate) mod no_tls {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "__c_openssl")]
|
||||
pub(crate) mod c_ssl {
|
||||
#[cfg(feature = "__tls")]
|
||||
pub(crate) mod tls_conn {
|
||||
use crate::{
|
||||
async_impl::{AsyncSslStream, Connector, MixStream},
|
||||
ErrorKind, HttpClientError,
|
||||
|
@ -71,14 +71,16 @@ pub mod no_tls {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "__c_openssl")]
|
||||
pub mod c_ssl {
|
||||
#[cfg(feature = "__tls")]
|
||||
pub mod tls_conn {
|
||||
use crate::{
|
||||
sync_impl::{Connector, MixStream},
|
||||
ErrorKind, HttpClientError,
|
||||
};
|
||||
use std::io::{Read, Write};
|
||||
use std::net::TcpStream;
|
||||
use std::{
|
||||
io::{Read, Write},
|
||||
net::TcpStream,
|
||||
};
|
||||
use ylong_http::request::uri::{Scheme, Uri};
|
||||
|
||||
impl Connector for super::HttpConnector {
|
||||
@ -124,12 +126,12 @@ pub mod c_ssl {
|
||||
tcp_stream
|
||||
};
|
||||
|
||||
let mut tls_ssl = config.ssl().map_err(|e| {
|
||||
let mut tls_ssl = self.config.tls.ssl().map_err(|e| {
|
||||
HttpClientError::new_with_cause(ErrorKind::Connect, Some(e))
|
||||
})?;
|
||||
|
||||
tls_ssl.set_sni_verify(&host_name).map_err(|e| {
|
||||
HttpClientError::new_with_cause(ErrorKind::Connect, Some(e));
|
||||
HttpClientError::new_with_cause(ErrorKind::Connect, Some(e))
|
||||
})?;
|
||||
|
||||
let stream = self
|
||||
|
Loading…
Reference in New Issue
Block a user