[][src]Struct reqwest::Error

pub struct Error { /* fields omitted */ }

The Errors that may occur when processing a Request.

Examples

extern crate serde;
extern crate reqwest;

use serde::Deserialize;

#[derive(Deserialize)]
struct Simple {
   key: String
}

fn run() {
   match make_request() {
       Err(e) => handler(e),
       Ok(_)  => return,
   }
}
// Response is not a json object conforming to the Simple struct
fn make_request() -> Result<Simple, reqwest::Error> {
  reqwest::get("http://httpbin.org/ip")?.json()
}

fn handler(e: reqwest::Error) {
   if e.is_http() {
       match e.url() {
           None => println!("No Url given"),
           Some(url) => println!("Problem making request to: {}", url),
       }
   }
   // Inspect the internal error and output it
   if e.is_serialization() {
      let serde_error = match e.get_ref() {
           None => return,
           Some(err) => err,
       };
       println!("problem parsing information {}", serde_error);
   }
   if e.is_redirect() {
       println!("server redirecting too many times or making loop");
   }
}

Methods

impl Error[src]

pub fn url(&self) -> Option<&Url>[src]

Returns a possible URL related to this error.

Examples

// displays last stop of a redirect loop
let response = reqwest::get("http://site.with.redirect.loop");
if let Err(e) = response {
    if e.is_redirect() {
        if let Some(final_stop) = e.url() {
            println!("redirect loop at {}", final_stop);
        }
    }
}

pub fn get_ref(&self) -> Option<&(dyn StdError + Send + Sync + 'static)>[src]

Returns a reference to the internal error, if available.

The 'static bounds allows using downcast_ref to check the details of the error.

Examples

extern crate url;
// retries requests with no host on localhost
let invalid_request = "http://";
let mut response = reqwest::get(invalid_request);
if let Err(e) = response {
    match e.get_ref().and_then(|e| e.downcast_ref::<url::ParseError>()) {
        Some(&url::ParseError::EmptyHost) => {
            let valid_request = format!("{}{}",invalid_request, "localhost");
            response = reqwest::get(&valid_request);
        },
        _ => (),
    }
}

pub fn is_http(&self) -> bool[src]

Returns true if the error is related to HTTP.

pub fn is_timeout(&self) -> bool[src]

Returns true if the error is related to a timeout.

pub fn is_serialization(&self) -> bool[src]

Returns true if the error is serialization related.

pub fn is_redirect(&self) -> bool[src]

Returns true if the error is from a RedirectPolicy.

pub fn is_client_error(&self) -> bool[src]

Returns true if the error is from a request returning a 4xx error.

pub fn is_server_error(&self) -> bool[src]

Returns true if the error is from a request returning a 5xx error.

pub fn status(&self) -> Option<StatusCode>[src]

Returns the status code, if the error was generated from a response.

Trait Implementations

impl Debug for Error[src]

impl Display for Error[src]

impl Error for Error[src]

Auto Trait Implementations

impl Send for Error

impl Unpin for Error

impl Sync for Error

impl !UnwindSafe for Error

impl !RefUnwindSafe for Error

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<E> Fail for E where
    E: 'static + Error + Send + Sync
[src]

impl<T> AsFail for T where
    T: Fail
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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