添加外部 toml, 修复 sync connect 报错

Signed-off-by: 张建辛 <zhangjianxin23@huawei.com>
This commit is contained in:
张建辛 2023-06-20 17:27:22 +08:00
parent e716c481ee
commit 6e432bcb7e
5 changed files with 54 additions and 17 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
target
/Cargo.lock

7
Cargo.toml Normal file
View File

@ -0,0 +1,7 @@
[workspace]
resolver = "2"
members = [
# web
"ylong_http",
"ylong_http_client",
]

View File

@ -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;
}

View File

@ -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,

View File

@ -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