[−][src]Struct reqwest::Response
A Response to a submitted Request
.
Methods
impl Response
[src]
pub fn status(&self) -> StatusCode
[src]
Get the StatusCode
of this Response
.
Examples
Checking for general status class:
let resp = reqwest::get("http://httpbin.org/get")?; if resp.status().is_success() { println!("success!"); } else if resp.status().is_server_error() { println!("server error!"); } else { println!("Something else happened. Status: {:?}", resp.status()); }
Checking for specific status codes:
use reqwest::Client; use reqwest::StatusCode; let client = Client::new(); let resp = client.post("http://httpbin.org/post") .body("possibly too large") .send()?; match resp.status() { StatusCode::OK => println!("success!"), StatusCode::PAYLOAD_TOO_LARGE => { println!("Request payload is too large!"); } s => println!("Received response status: {:?}", s), };
pub fn headers(&self) -> &HeaderMap
[src]
Get the Headers
of this Response
.
Example
Saving an etag when caching a file:
use reqwest::Client; use reqwest::header::ETAG; let client = Client::new(); let mut resp = client.get("http://httpbin.org/cache").send()?; if resp.status().is_success() { if let Some(etag) = resp.headers().get(ETAG) { std::fs::write("etag", etag.as_bytes()); } let mut file = std::fs::File::create("file")?; resp.copy_to(&mut file)?; }
pub fn cookies<'a>(&'a self) -> impl Iterator<Item = Cookie<'a>> + 'a
[src]
Retrieve the cookies contained in the response.
Note that invalid 'Set-Cookie' headers will be ignored.
pub fn version(&self) -> Version
[src]
Get the HTTP Version
of this Response
.
pub fn url(&self) -> &Url
[src]
Get the final Url
of this Response
.
Example
let resp = reqwest::get("http://httpbin.org/redirect/1")?; assert_eq!(resp.url().as_str(), "http://httpbin.org/get");
pub fn remote_addr(&self) -> Option<SocketAddr>
[src]
Get the remote address used to get this Response
.
Example
let resp = reqwest::get("http://httpbin.org/redirect/1")?; println!("httpbin.org address: {:?}", resp.remote_addr());
pub fn content_length(&self) -> Option<u64>
[src]
Get the content-length of the response, if it is known.
Reasons it may not be known:
- The server didn't send a
content-length
header. - The response is gzipped and automatically decoded (thus changing the actual decoded length).
pub fn json<T: DeserializeOwned>(&mut self) -> Result<T>
[src]
Try and deserialize the response body as JSON using serde
.
Examples
#[derive(Deserialize)] struct Ip { origin: String, } let json: Ip = reqwest::get("http://httpbin.org/ip")?.json()?;
Errors
This method fails whenever the response body is not in JSON format
or it cannot be properly deserialized to target type T
. For more
details please see [serde_json::from_reader
].
[serde_json::from_reader
]: https://docs.serde.rs/serde_json/fn.from_reader.html
pub fn text(&mut self) -> Result<String>
[src]
Get the response text.
This method decodes the response body with BOM sniffing
and with malformed sequences replaced with the REPLACEMENT CHARACTER.
Encoding is determinated from the charset
parameter of Content-Type
header,
and defaults to utf-8
if not presented.
Example
let content = reqwest::get("http://httpbin.org/range/26")?.text()?;
Note
This consumes the body. Trying to read more, or use of response.json()
will return empty values.
pub fn text_with_charset(&mut self, default_encoding: &str) -> Result<String>
[src]
Get the response text given a specific encoding.
This method decodes the response body with BOM sniffing
and with malformed sequences replaced with the REPLACEMENT CHARACTER.
You can provide a default encoding for decoding the raw message, while the
charset
parameter of Content-Type
header is still prioritized. For more information
about the possible encoding name, please go to
https://docs.rs/encoding_rs/0.8.17/encoding_rs/#relationship-with-windows-code-pages
Example
let content = reqwest::get("http://httpbin.org/range/26")?.text_with_charset("utf-8")?;
Note
This consumes the body. Trying to read more, or use of response.json()
will return empty values.
pub fn copy_to<W: ?Sized>(&mut self, w: &mut W) -> Result<u64> where
W: Write,
[src]
W: Write,
Copy the response body into a writer.
This function internally uses std::io::copy
and hence will continuously read data from
the body and then write it into writer in a streaming fashion until EOF is met.
On success, the total number of bytes that were copied to writer
is returned.
Example
let mut resp = reqwest::get("http://httpbin.org/range/5")?; let mut buf: Vec<u8> = vec![]; resp.copy_to(&mut buf)?; assert_eq!(b"abcde", buf.as_slice());
pub fn error_for_status(self) -> Result<Self>
[src]
Turn a response into an error if the server returned an error.
Example
let res = reqwest::get("http://httpbin.org/status/400")? .error_for_status(); if let Err(err) = res { assert_eq!(err.status(), Some(reqwest::StatusCode::BAD_REQUEST)); }
pub fn error_for_status_ref(&self) -> Result<&Self>
[src]
Turn a reference to a response into an error if the server returned an error.
Example
let res = reqwest::get("http://httpbin.org/status/400")?; let res = res.error_for_status_ref(); if let Err(err) = res { assert_eq!(err.status(), Some(reqwest::StatusCode::BAD_REQUEST)); }
Trait Implementations
impl<T: Into<Body>> From<Response<T>> for Response
[src]
impl Debug for Response
[src]
impl Read for Response
[src]
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>
1.36.0[src]
unsafe fn initializer(&self) -> Initializer
[src]
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
1.0.0[src]
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
fn bytes(self) -> Bytes<Self>
1.0.0[src]
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
Auto Trait Implementations
impl Send for Response
impl Unpin for Response
impl !Sync for Response
impl !UnwindSafe for Response
impl !RefUnwindSafe for Response
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for 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>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<R> ReadBytesExt for R where
R: Read + ?Sized,
[src]
R: Read + ?Sized,
fn read_u8(&mut self) -> Result<u8, Error>
[src]
fn read_i8(&mut self) -> Result<i8, Error>
[src]
fn read_u16<T>(&mut self) -> Result<u16, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i16<T>(&mut self) -> Result<i16, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u24<T>(&mut self) -> Result<u32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i24<T>(&mut self) -> Result<i32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u32<T>(&mut self) -> Result<u32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i32<T>(&mut self) -> Result<i32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u48<T>(&mut self) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i48<T>(&mut self) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u64<T>(&mut self) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i64<T>(&mut self) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u128<T>(&mut self) -> Result<u128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i128<T>(&mut self) -> Result<i128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f32<T>(&mut self) -> Result<f32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f64<T>(&mut self) -> Result<f64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
[src]
fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f64_into<T>(&mut self, dst: &mut [f64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
fn read_f64_into_unchecked<T>(&mut self, dst: &mut [f64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,