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, Error>
pub async fn text(self) -> Result<String, Error>
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 text_with_charset(
self,
default_encoding: &str,
) -> Result<String, Error>
pub async fn text_with_charset( self, default_encoding: &str, ) -> Result<String, Error>
Get the full 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.
Note that the BOM is stripped from the returned String.
§Optional
This requires the optional encoding_rs
feature enabled.
§Example
let content = reqwest::get("http://httpbin.org/range/26")
.await?
.text_with_charset("utf-8")
.await?;
println!("text: {content:?}");
Sourcepub async fn json<T>(self) -> Result<T, Error>where
T: DeserializeOwned,
pub async fn json<T>(self) -> Result<T, Error>where
T: DeserializeOwned,
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, Error>
pub async fn bytes(self) -> Result<Bytes, Error>
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>, Error>
pub async fn chunk(&mut self) -> Result<Option<Bytes>, Error>
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 error_for_status(self) -> Result<Response, Error>
pub fn error_for_status(self) -> Result<Response, Error>
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<&Response, Error>
pub fn error_for_status_ref(&self) -> Result<&Response, Error>
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)
);
}
}
}
Trait Implementations§
Source§impl ScraperResponse for Response
impl ScraperResponse for Response
Source§async fn json_with_path_to_err<T: DeserializeOwned>(self) -> Result<T>
async fn json_with_path_to_err<T: DeserializeOwned>(self) -> Result<T>
Source§async fn css_selector(self) -> Result<Html>
async fn css_selector(self) -> Result<Html>
Auto Trait Implementations§
impl Freeze for Response
impl !RefUnwindSafe for Response
impl Send for Response
impl Sync for Response
impl Unpin for Response
impl !UnwindSafe for Response
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more