// #![warn(rust_2018_idioms)] use native_tls::TlsConnector; use std::error::Error; use std::net::ToSocketAddrs; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::TcpStream; #[tokio::main] async fn main() -> Result<(), Box> { let addr = "www.rust-lang.org:443" .to_socket_addrs()? .next() .ok_or("failed to resolve www.rust-lang.org")?; let socket = TcpStream::connect(&addr).await?; let cx = TlsConnector::builder().build()?; let cx = tokio_native_tls::TlsConnector::from(cx); let mut socket = cx.connect("www.rust-lang.org", socket).await?; socket .write_all( "\ GET / HTTP/1.0\r\n\ Host: www.rust-lang.org\r\n\ \r\n\ " .as_bytes(), ) .await?; let mut data = Vec::new(); socket.read_to_end(&mut data).await?; // println!("data: {:?}", &data); println!("{}", String::from_utf8_lossy(&data[..])); Ok(()) }