【问题标题】:RestKit: Getting HTTP status code when a request failsRestKit:请求失败时获取 HTTP 状态码
【发布时间】:2011-11-21 21:25:04
【问题描述】:

我在 iOS 应用程序中使用 RestKit,我需要对某些 ​​HTTP 错误代码进行特殊处理。如何在request:didFailLoadWithError: 中检查响应 HTTP 状态代码?在NSErroruserInfo 字典中是否有一些条目?

我在RKRequestDelegate documentation 中找不到任何内容。

这是委托方法的接口:

- (void)request:(RKRequest *)request didFailLoadWithError:(NSError *)error

【问题讨论】:

    标签: iphone ios http restkit


    【解决方案1】:

    对于使用新版 RESTkit 和 objectManager 的人,您可以从RKObjectRequestOperation 获取状态码:

    operation.HTTPRequestOperation.response.statusCode

    【讨论】:

      【解决方案2】:

      事实证明,didFailLoadWithError: 不会因 HTTP 错误而被调用。 request:didLoadResponse: 方法仍会针对 HTTP 错误调用,因此响应(以及状态代码)可用。

      【讨论】:

        【解决方案3】:

        RKResponse 上的 statusCode 属性对我有用:

        - (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error 
        {
            switch ([[objectLoader response] statusCode]) {
                case 409:
            ...
        
        }
        

        【讨论】:

        • 我只是在使用 RKClient,所以我通过 RKRequestDelegate 而不是 ObjectManagerDelegate 收到通知。 RKRequestDelegate 为错误提供的所有内容是 RKRequest 和 NSError。
        • RKRequest 在 0.10.3 中有一个响应属性。
        猜你喜欢
        • 1970-01-01
        • 2020-03-29
        • 2018-05-04
        • 2011-08-02
        • 2015-06-08
        • 1970-01-01
        • 2017-06-02
        • 2022-10-04
        • 2012-03-09
        相关资源
        最近更新 更多