4

我正在使用 RestKit 0.2,我收到以下错误。

E restkit.network:RKObjectRequestOperation.m:237 GET 'http://some.url.com/o/3134' (200 OK / 0 objects) [request=3.2563s mapping=0.0000s total=3.2955s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1011 "Expected status code in (400-499), got 200" UserInfo=0x87712e0 {NSLocalizedRecoverySuggestion={"d":"2013-07-15T02:30:00.000Z","t":16.1,"at":13.8}, AFNetworkingOperationFailingURLRequestErrorKey=<NSMutableURLRequest http://some.url.com/o/3134>, NSErrorFailingURLKey=http://some.url.com/o/3134, NSLocalizedDescription=Expected status code in (400-499), got 200, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x9647260>}

我使用 nodejs 和 restify 作为服务器端。我可以使用谷歌浏览器获取 json 数据,我可以看到响应的 Content-Type 在 Chrome 中是 application/json。

但是当我使用 RestKit 时,我收到了关于“(400-499)中的预期状态代码,得到 200”的错误,我认为 200 很好,为什么 RestKit 期望 400-499 而不是 200?而且我也可以在错误消息中看到 json 对象。即 {"d":"2013-07-15T02:30:00.000Z","t":16.1,"at":13.8}。

谢谢。

4

1 回答 1

6

当您为请求定义响应描述符时,如果您希望响应带有 http 状态代码 2xx ,则需要将状态代码设置为 RKStatusCodeIndexSetForClass( RKStatusCodeClassSuccessful )

例子:

[RKResponseDescriptor responseDescriptorWithMapping:yourMapping method:RKRequestMethodAny pathPattern:yourPattern keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

更新:

确保响应描述符的 pathPattern 与请求路径匹配。否则 RestKit 将使用错误响应描述符(如果您定义了它),并期望响应具有不同的状态代码。

于 2014-06-27T13:53:49.610 回答