I'm using RestKit in an iOS app and I need to have special handling for certain HTTP error codes. How can the the response HTTP status code be checked inside of request:didFailLoadWithError:
? Is there some entry in the userInfo
dictionary of the NSError
?
I couldn't find anything in the RKRequestDelegate
documentation.
Here's the interface for the delegate method:
- (void)request:(RKRequest *)request didFailLoadWithError:(NSError *)error
The HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request syntax, invalid request message framing, or deceptive request routing).
We tend to get -1 status codes when there are network issues or connection problems, so we display the user a network problems page in those cases.
For people using the new version of RESTkit and objectManager, you can fetch the statuscode from the RKObjectRequestOperation
:
operation.HTTPRequestOperation.response.statusCode
It turns out that didFailLoadWithError:
is not called for HTTP errors. The request:didLoadResponse:
method is still called for HTTP errors, so the response (and hence the status codes) are available.
The statusCode
property found on RKResponse
works for me:
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error
{
switch ([[objectLoader response] statusCode]) {
case 409:
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With