Restkit与裸json响应对象

时间:2013-10-13 09:55:04

标签: objective-c json restkit restkit-0.20

我是Restkit的新手,但到目前为止,对我来说,使用版本0.20.3可以很好地满足我的大部分网络需求。

我正在使用WCF webhttp绑定在c#中编写基于json的API,值得一提的是,我完全无法控制此API并且无法更改返回的json的格式,我需要使用我的工作有

问题是,当API返回一个简单的类型,如int,double或string作为响应时,json响应完全裸露,如下所示。

字符串响应

"hello world"

int response

2342524

这两个示例响应都具有application / json的内容类型

我曾尝试使用带有restkit的API端点,该端点通过客户编号获取客户订单的数量。 请求的代码如下,我希望NSNumber作为响应,但它生成一个错误,因为它是一个原始的解包类型,我无法为此提供映射。

 [manager getObject:nil
                  path:@"/service/http/CountOrders?CustomerId=324534413"
            parameters:nil
               success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
                   RKLogInfo(@"order count: %@",mappingResult);

               } failure:^(RKObjectRequestOperation *operation, NSError *error) {

                   RKLogError(@"Operation failed with error: %@", error);
               }];

我得到的错误是

restkit.network:RKResponseMapperOperation.m:317 Failed to parse response data: Loaded an unprocessable response (200) with content type 'application/json'
restkit.network:RKObjectRequestOperation.m:213 GET 'http://CUSTOMERDOMAIN/service/http/CountOrders?CustomerId=324534413' 
(200 OK / 0 objects) 
[request=0.2263s mapping=0.0000s total=0.2386s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1017 "Loaded an unprocessable response (200) with content type 'application/json'" 

UserInfo=0x8e1a660 {NSErrorFailingURLKey=http://CUSTOMERDOMAIN/service/http/CountOrders?CustomerId=324534413, NSUnderlyingError=0x8e1b1a0 
"The operation couldn’t be completed. (Cocoa error 3840.)", 
NSLocalizedDescription=Loaded an unprocessable response (200) with content type 'application/json'}
hj

有没有办法解析对NSNumber的响应来覆盖这个边缘情况? 我认为自定义反序列化处理程序可能是最好的方法,但正如我所说,我是restkit的新手,我基本上正在寻找正确的方向。

1 个答案:

答案 0 :(得分:0)

自定义序列化程序可以工作,但一个简单的方法可能是跳过RestKit来处理带有“简单”响应的请求,而是使用底层的AFNetworking类。然后您不必担心序列化,您可以快速强制响应值。