[−][src]Struct http_req::request::RequestBuilder
Relatively low-level struct for making HTTP requests.
It can work with any stream that implements Read
and Write
.
By default it does not close the connection after completion of the response.
Examples
use std::net::TcpStream; use http_req::{request::RequestBuilder, tls, uri::Uri, response::StatusCode}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap(); assert_eq!(response.status_code(), StatusCode::new(200));
Methods
impl<'a> RequestBuilder<'a>
[src]
pub fn new(uri: &'a Uri) -> RequestBuilder<'a>
[src]
Creates new RequestBuilder
with default parameters
Examples
use std::net::TcpStream; use http_req::{request::RequestBuilder, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn method<T>(&mut self, method: T) -> &mut Self where
Method: From<T>,
[src]
Method: From<T>,
Sets request method
Examples
use std::net::TcpStream; use http_req::{request::{RequestBuilder, Method}, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .method(Method::HEAD) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn version<T>(&mut self, version: T) -> &mut Self where
HttpVersion: From<T>,
[src]
HttpVersion: From<T>,
Sets HTTP version
Examples
use std::net::TcpStream; use http_req::{request::{RequestBuilder, HttpVersion}, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .version(HttpVersion::Http10) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn headers<T>(&mut self, headers: T) -> &mut Self where
Headers: From<T>,
[src]
Headers: From<T>,
Replaces all it's headers with headers passed to the function
Examples
use std::net::TcpStream; use http_req::{request::{RequestBuilder, Method}, response::Headers, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let mut headers = Headers::new(); headers.insert("Accept-Charset", "utf-8"); headers.insert("Accept-Language", "en-US"); headers.insert("Host", "rust-lang.org"); headers.insert("Connection", "Close"); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .headers(headers) .send(&mut stream, &mut writer) .unwrap();
pub fn header<T: ?Sized, U: ?Sized>(&mut self, key: &T, val: &U) -> &mut Self where
T: ToString,
U: ToString,
[src]
T: ToString,
U: ToString,
Adds new header to existing/default headers
Examples
use std::net::TcpStream; use http_req::{request::{RequestBuilder, Method}, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn body(&mut self, body: &'a [u8]) -> &mut Self
[src]
Sets body for request
Examples
use std::net::TcpStream; use http_req::{request::{RequestBuilder, Method}, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); const body: &[u8; 27] = b"field1=value1&field2=value2"; let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .method(Method::POST) .body(body) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn send<T, U>(
&self,
stream: &mut T,
writer: &mut U
) -> Result<Response, Error> where
T: Write + Read,
U: Write,
[src]
&self,
stream: &mut T,
writer: &mut U
) -> Result<Response, Error> where
T: Write + Read,
U: Write,
Sends HTTP request in these steps:
- Writes request message to
stream
. - Writes response's body to
writer
. - Returns response for this request.
Examples
HTTP
use std::net::TcpStream; use http_req::{request::RequestBuilder, uri::Uri}; //This address is automatically redirected to HTTPS, so response code will not ever be 200 let addr: Uri = "http://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let mut stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let response = RequestBuilder::new(&addr) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
HTTPS
use std::net::TcpStream; use http_req::{request::RequestBuilder, tls, uri::Uri}; let addr: Uri = "https://www.rust-lang.org/learn".parse().unwrap(); let mut writer = Vec::new(); let stream = TcpStream::connect((addr.host().unwrap(), addr.corr_port())).unwrap(); let mut stream = tls::Config::default() .connect(addr.host().unwrap_or(""), stream) .unwrap(); let response = RequestBuilder::new(&addr) .header("Connection", "Close") .send(&mut stream, &mut writer) .unwrap();
pub fn write_msg<T, U>(&self, stream: &mut T, msg: &U) -> Result<(), Error> where
T: Write,
U: AsRef<[u8]>,
[src]
T: Write,
U: AsRef<[u8]>,
Writes message to stream
and flushes it
pub fn read_head<T: Read>(&self, stream: &mut T) -> Result<Response, Error>
[src]
Reads head of server's response
pub fn parse_msg(&self) -> Vec<u8>
[src]
Parses request message for this RequestBuilder
Trait Implementations
impl<'a> Clone for RequestBuilder<'a>
[src]
fn clone(&self) -> RequestBuilder<'a>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<'a> Debug for RequestBuilder<'a>
[src]
impl<'a> PartialEq<RequestBuilder<'a>> for RequestBuilder<'a>
[src]
fn eq(&self, other: &RequestBuilder<'a>) -> bool
[src]
fn ne(&self, other: &RequestBuilder<'a>) -> bool
[src]
impl<'a> StructuralPartialEq for RequestBuilder<'a>
[src]
Auto Trait Implementations
impl<'a> RefUnwindSafe for RequestBuilder<'a>
impl<'a> Send for RequestBuilder<'a>
impl<'a> Sync for RequestBuilder<'a>
impl<'a> Unpin for RequestBuilder<'a>
impl<'a> UnwindSafe for RequestBuilder<'a>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,