pub struct Response { /* private fields */ }
Expand description
A Response to a submitted Request
.
Implementations§
Source§impl Response
impl Response
Sourcepub fn status(&self) -> StatusCode
pub fn status(&self) -> StatusCode
Get the StatusCode
of this Response
.
§Examples
Checking for general status class:
let resp = reqwest::blocking::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::blocking::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:?}"),
};
Sourcepub fn headers(&self) -> &HeaderMap
pub fn headers(&self) -> &HeaderMap
Get the Headers
of this Response
.
§Example
Saving an etag when caching a file:
use reqwest::blocking::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)?;
}
Sourcepub fn headers_mut(&mut self) -> &mut HeaderMap
pub fn headers_mut(&mut self) -> &mut HeaderMap
Get a mutable reference to the Headers
of this Response
.
Available on crate feature cookies
only.
cookies
only.Retrieve the cookies contained in the response.
Note that invalid ‘Set-Cookie’ headers will be ignored.
§Optional
This requires the optional cookies
feature to be enabled.
Sourcepub fn url(&self) -> &Url
pub fn url(&self) -> &Url
Get the final Url
of this Response
.
§Example
let resp = reqwest::blocking::get("http://httpbin.org/redirect/1")?;
assert_eq!(resp.url().as_str(), "http://httpbin.org/get");
Sourcepub fn remote_addr(&self) -> Option<SocketAddr>
pub fn remote_addr(&self) -> Option<SocketAddr>
Get the remote address used to get this Response
.
§Example
let resp = reqwest::blocking::get("http://httpbin.org/redirect/1")?;
println!("httpbin.org address: {:?}", resp.remote_addr());
Sourcepub fn extensions(&self) -> &Extensions
pub fn extensions(&self) -> &Extensions
Returns a reference to the associated extensions.
Sourcepub fn extensions_mut(&mut self) -> &mut Extensions
pub fn extensions_mut(&mut self) -> &mut Extensions
Returns a mutable reference to the associated extensions.
Sourcepub fn content_length(&self) -> Option<u64>
pub fn content_length(&self) -> Option<u64>
Get the content length of the response, if it is known.
This value does not directly represents the value of the Content-Length
header, but rather the size of the response’s body. To read the header’s
value, please use the Response::headers
method instead.
Reasons it may not be known:
- The response does not include a body (e.g. it responds to a
HEAD
request). - The response is gzipped and automatically decoded (thus changing the actual decoded length).
Sourcepub fn json<T: DeserializeOwned>(self) -> Result<T>
Available on crate feature json
only.
pub fn json<T: DeserializeOwned>(self) -> Result<T>
json
only.Try and deserialize the response body as JSON using serde
.
§Optional
This requires the optional json
feature enabled.
§Examples
// This `derive` requires the `serde` dependency.
#[derive(Deserialize)]
struct Ip {
origin: String,
}
let json: Ip = reqwest::blocking::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
.
Sourcepub fn bytes(self) -> Result<Bytes>
pub fn bytes(self) -> Result<Bytes>
Get the full response body as Bytes
.
§Example
let bytes = reqwest::blocking::get("http://httpbin.org/ip")?.bytes()?;
println!("bytes: {bytes:?}");
Sourcepub fn text(self) -> Result<String>
pub fn text(self) -> Result<String>
Get the response text.
This method decodes the response body with BOM sniffing
and with malformed sequences replaced with the char::REPLACEMENT_CHARACTER
.
Encoding is determined from the charset
parameter of Content-Type
header,
and defaults to utf-8
if not presented.
§Note
If the charset
feature is disabled the method will only attempt to decode the
response as UTF-8, regardless of the given Content-Type
§Example
let content = reqwest::blocking::get("http://httpbin.org/range/26")?.text()?;
Sourcepub fn text_with_charset(self, default_encoding: &str) -> Result<String>
Available on crate feature charset
only.
pub fn text_with_charset(self, default_encoding: &str) -> Result<String>
charset
only.Get the response text given a specific encoding.
This method decodes the response body with BOM sniffing
and with malformed sequences replaced with the char::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 encoding_rs
docs.
§Optional
This requires the optional charset
feature enabled.
§Example
let content = reqwest::blocking::get("http://httpbin.org/range/26")?
.text_with_charset("utf-8")?;
Sourcepub fn copy_to<W>(&mut self, w: &mut W) -> Result<u64>
pub fn copy_to<W>(&mut self, w: &mut W) -> Result<u64>
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::blocking::get("http://httpbin.org/range/5")?;
let mut buf: Vec<u8> = vec![];
resp.copy_to(&mut buf)?;
assert_eq!(b"abcde", buf.as_slice());
Sourcepub fn error_for_status(self) -> Result<Self>
pub fn error_for_status(self) -> Result<Self>
Turn a response into an error if the server returned an error.
§Example
let res = reqwest::blocking::get("http://httpbin.org/status/400")?
.error_for_status();
if let Err(err) = res {
assert_eq!(err.status(), Some(reqwest::StatusCode::BAD_REQUEST));
}
Sourcepub fn error_for_status_ref(&self) -> Result<&Self>
pub fn error_for_status_ref(&self) -> Result<&Self>
Turn a reference to a response into an error if the server returned an error.
§Example
let res = reqwest::blocking::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§
Source§impl Read for Response
impl Read for Response
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf
. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read more