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
.
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
.
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 remote_addr(&self) -> Option<SocketAddr>
pub fn remote_addr(&self) -> Option<SocketAddr>
Get the remote address used to get this Response
.
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 async fn text(self) -> Result<String>
pub async fn text(self) -> Result<String>
Get the full 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 that the BOM is stripped from the returned String.
§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::get("http://httpbin.org/range/26")
.await?
.text()
.await?;
println!("text: {content:?}");
Sourcepub async fn json<T: DeserializeOwned>(self) -> Result<T>
pub async fn json<T: DeserializeOwned>(self) -> Result<T>
Try to deserialize the response body as JSON.
§Optional
This requires the optional json
feature enabled.
§Examples
// This `derive` requires the `serde` dependency.
#[derive(Deserialize)]
struct Ip {
origin: String,
}
let ip = reqwest::get("http://httpbin.org/ip")
.await?
.json::<Ip>()
.await?;
println!("ip: {}", ip.origin);
§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 async fn bytes(self) -> Result<Bytes>
pub async fn bytes(self) -> Result<Bytes>
Get the full response body as Bytes
.
§Example
let bytes = reqwest::get("http://httpbin.org/ip")
.await?
.bytes()
.await?;
println!("bytes: {bytes:?}");
Sourcepub async fn chunk(&mut self) -> Result<Option<Bytes>>
pub async fn chunk(&mut self) -> Result<Option<Bytes>>
Stream a chunk of the response body.
When the response body has been exhausted, this will return None
.
§Example
let mut res = reqwest::get("https://hyper.rs").await?;
while let Some(chunk) = res.chunk().await? {
println!("Chunk: {chunk:?}");
}
Sourcepub fn bytes_stream(self) -> impl Stream<Item = Result<Bytes>>
pub fn bytes_stream(self) -> impl Stream<Item = Result<Bytes>>
Convert the response into a Stream
of Bytes
from the body.
§Example
use futures_util::StreamExt;
let mut stream = reqwest::get("http://httpbin.org/ip")
.await?
.bytes_stream();
while let Some(item) = stream.next().await {
println!("Chunk: {:?}", item?);
}
§Optional
This requires the optional stream
feature to be enabled.
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
fn on_response(res: Response) {
match res.error_for_status() {
Ok(_res) => (),
Err(err) => {
// asserting a 400 as an example
// it could be any status between 400...599
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
fn on_response(res: &Response) {
match res.error_for_status_ref() {
Ok(_res) => (),
Err(err) => {
// asserting a 400 as an example
// it could be any status between 400...599
assert_eq!(
err.status(),
Some(reqwest::StatusCode::BAD_REQUEST)
);
}
}
}