docs(client): add example of client conn usage (#2350)
Add basic, module level example for the Builder performing a handshake, spawning a task to run the Connection and sending a single request and receiving the response. Closes #2272
This commit is contained in:
@@ -7,6 +7,44 @@
|
|||||||
//!
|
//!
|
||||||
//! If don't have need to manage connections yourself, consider using the
|
//! If don't have need to manage connections yourself, consider using the
|
||||||
//! higher-level [Client](super) API.
|
//! higher-level [Client](super) API.
|
||||||
|
//!
|
||||||
|
//! ## Example
|
||||||
|
//! A simple example that uses the `SendRequest` struct to talk HTTP over a Tokio TCP stream
|
||||||
|
//! ```no_run
|
||||||
|
//! # #[cfg(all(feature = "client", feature = "http1", feature = "runtime"))]
|
||||||
|
//! # mod rt {
|
||||||
|
//! use http::{Request, StatusCode};
|
||||||
|
//! use hyper::{client::conn::Builder, Body};
|
||||||
|
//! use tokio::net::TcpStream;
|
||||||
|
//!
|
||||||
|
//! #[tokio::main]
|
||||||
|
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
//! let target_stream = TcpStream::connect("example.com:80").await?;
|
||||||
|
//!
|
||||||
|
//! let (mut request_sender, connection) = Builder::new()
|
||||||
|
//! .handshake::<TcpStream, Body>(target_stream)
|
||||||
|
//! .await?;
|
||||||
|
//!
|
||||||
|
//! // spawn a task to poll the connection and drive the HTTP state
|
||||||
|
//! tokio::spawn(async move {
|
||||||
|
//! if let Err(e) = connection.await {
|
||||||
|
//! eprintln!("Error in connection: {}", e);
|
||||||
|
//! }
|
||||||
|
//! });
|
||||||
|
//!
|
||||||
|
//! let request = Request::builder()
|
||||||
|
//! // We need to manually add the host header because SendRequest does not
|
||||||
|
//! .header("Host", "example.com")
|
||||||
|
//! .method("GET")
|
||||||
|
//! .body(Body::from(""))?;
|
||||||
|
//!
|
||||||
|
//! let response = request_sender.send_request(request).await?;
|
||||||
|
//! assert!(response.status() == StatusCode::OK);
|
||||||
|
//! Ok(())
|
||||||
|
//! }
|
||||||
|
//!
|
||||||
|
//! # }
|
||||||
|
//! ```
|
||||||
|
|
||||||
use std::error::Error as StdError;
|
use std::error::Error as StdError;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|||||||
Reference in New Issue
Block a user