我刚刚开始为我正在构建的 iOS 应用试用 RestKit。我通常使用 ASIHttpRequest,但我想测试 RestKit 主要是因为它在 JSON 和 CoreData 之间的对象映射。 RestKit 有一些很棒的东西,但我遇到了一个问题,它真的让人觉得它有缺陷,除非我做错了什么或错过了什么。我希望这里有人可以指导我。
我正在使用 RKObjectLoader 对 REST API 进行异步和同步调用。我的服务旨在发送回正确的 HTTP 状态代码以及某种描述,401 是 API 何时需要经过身份验证的用户的示例。
我的问题是,如果我收到 401 错误,RestKit 将停止正常运行。 RKResponse 对象的状态码为 0,即使其中包含有效负载。我很确定这归结为 NSURLConnection 对 HTTP 状态的糟糕处理,但我希望 RestKit 能以某种方式解决这个问题。特别是因为 RKResponse 类有相当多的包装函数来确定响应的状态码(isOK、isCreated、isForbidden、isUnauthorized 等)。
相比之下,ASIHttpRequest 不使用 NSURLConnection,而是使用较低级别的 CFNetwork 代码。 ASIHttpRequest 让我可以准确地查看通过 HTTP 返回的内容,而不会左右发送错误。
问题是,我是不是做错了什么,或者这是 RestKit 的预期行为?有没有人能够成功调用 [RKResponse isAuthenticated]?尽管对我来说不确定,但在这方面以异步和同步模式运行之间有什么区别。我确实在某处读到 NSURLConnection 在同步模式下运行会有所不同,即使底层代码只是调用异步操作。这是否与我使用 RKObjectLoader 而不仅仅是 RKRequest 有更多关系?可能负载无法映射到模型这一事实引起了愤怒,但似乎代码在 RKRequest.sendSynchronously 中更早地中断了,在实际发生映射之前。
底线是我的代码需要能够自由读取 HTTP 状态代码。任何指导将不胜感激。
海德尔
Best Answer-推荐答案 strong>
RestKit 0.20.x 的常用方法是继承 RKObjectRequestOperation。
我写了一篇关于这个问题的博客文章,可以在这里找到:
http://blog.higgsboson.tk/2013/09/03/global-request-management-with-restkit/
关于ios - RestKit 处理不同的 HTTP 状态码,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/7628728/
|