Struct reqwest::Error
[−]
[src]
pub struct Error { /* fields omitted */ }
The Errors that may occur when processing a Request
.
Examples
#[macro_use] extern crate serde_derive; extern crate reqwest; #[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]
fn url(&self) -> Option<&Url>
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); } } }
fn get_ref(&self) -> Option<&(StdError + Send + Sync + 'static)>
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); }, _ => (), } }
fn is_http(&self) -> bool
Returns true if the error is related to HTTP.
fn is_serialization(&self) -> bool
Returns true if the error is serialization related.
fn is_redirect(&self) -> bool
Returns true if the error is from a RedirectPolicy
.
fn is_client_error(&self) -> bool
Returns true if the error is from a request returning a 4xx error.
fn is_server_error(&self) -> bool
Returns true if the error is from a request returning a 5xx error.
fn status(&self) -> Option<StatusCode>
Returns the status code, if the error was generated from a response.