Struct reqwest::Response

source ·
pub struct Response { /* private fields */ }
Expand description

A Response to a submitted Request.

Implementations§

source§

impl Response

source

pub fn status(&self) -> StatusCode

Get the StatusCode of this Response.

source

pub fn version(&self) -> Version

Get the HTTP Version of this Response.

source

pub fn headers(&self) -> &HeaderMap

Get the Headers of this Response.

source

pub fn headers_mut(&mut self) -> &mut HeaderMap

Get a mutable reference to the Headers of this Response.

source

pub fn content_length(&self) -> Option<u64>

Get the content-length of this response, if known.

Reasons it may not be known:

  • The server didn’t send a content-length header.
  • The response is compressed and automatically decoded (thus changing the actual decoded length).
source

pub fn url(&self) -> &Url

Get the final Url of this Response.

source

pub fn remote_addr(&self) -> Option<SocketAddr>

Get the remote address used to get this Response.

source

pub fn extensions(&self) -> &Extensions

Returns a reference to the associated extensions.

source

pub fn extensions_mut(&mut self) -> &mut Extensions

Returns a mutable reference to the associated extensions.

source

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 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:?}");
source

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.

source

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:?}");
source

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:?}");
}
source

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.

source

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)
            );
        }
    }
}
source

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)
            );
        }
    }
}
source§

impl Response

source

pub async fn upgrade(self) -> Result<Upgraded>

Consumes the response and returns a future for a possible HTTP upgrade.

Trait Implementations§

source§

impl Debug for Response

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Into<Body>> From<Response<T>> for Response

source§

fn from(r: Response<T>) -> Response

Converts to this type from the input type.
source§

impl From<Response> for Body

A Response can be piped as the Body of another request.

source§

fn from(r: Response) -> Body

Converts to this type from the input type.
source§

impl From<Response> for Response<Body>

A Response can be converted into a http::Response.

source§

fn from(r: Response) -> Response<Body>

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T