使用restkit发送HTTPBody数据

时间:2012-02-13 07:08:42

标签: iphone objective-c ios json restkit


我正在使用firefox工具调用“Poster”来检查我的Web服务是否正常工作。当我发布请求时,我在要发送的内容中发送一个JSON对象(也称为HTTP body data)。
当我按下POST按钮时,结果很好。 enter image description here

现在我想在objective-c:{/ p>中使用RestKit完全相同

    NSString *squery = @"{\"Sort\":\"Relevance\",\"DaysToSearch\":0,\"WorkType\":\"\",\"PageSize\":20,\"LastRunCount\":0,\"IndustryCodes\":[\"\"],\"AccountId\":27,\"Experience\":\"\",\"GetResultCount\":0,\"Keywords\":\"iOS\",\"PageIndex\":0,\"DistanceFromLocation\":\"250\",\"SalaryType\":\"\",\"JobQueryId\":\"\",\"JobTitleCodes\":[\"\"]}";

RKObjectLoader *objectLoader = [[RKObjectManager sharedManager] objectLoaderWithResourcePath:url delegate:performJobQueryHandler];
objectLoader.method = RKRequestMethodPOST;
objectLoader.objectMapping = s.jobQueryDataMapper;
objectLoader.HTTPBody = [squery dataUsingEncoding:NSUTF8StringEncoding];
objectLoader.serializationMIMEType = RKMIMETypeJSON;
[objectLoader send];

结果我得到:“发生了非故障异常。”




在FireFox扩展“Poster”中,如果我使用的是不同于“application / json”的我的类型,请说“application / x-www-form-urlencoded”我得到同样的错误:“发生了非故障异常。 “
objectLoader.serializationMIMEType = RKMIMETypeJSON有问题; ???

Martin Magakian

1 个答案:

答案 0 :(得分:3)

好的,我想我发现了。

我用

激活了RestKit调试
  

RKLogConfigureByName(“RestKit / Network”,RKLogLevelTrace);

我得到了:

2012-02-14 11:55:48 [4048:207] T restkit.network:RKRequest.m:318 Prepared POST URLRequest '<NSMutableURLRequest http://servicestest.foo.com/jobservice/jobservice.svc/json/jobquery>'. HTTP Headers: {
Accept = "application/json";
"Content-Type" = "application/x-www-form-urlencoded";
}. HTTP Body: Sort=Relevance&DaysToSearch=0&WorkType=&SalaryType=&LastRunCount=0&IndustryCodes[]=&Experience=&AccountId=0&GetResultCount=0&PageIndex=0&DistanceFromLocation=250&PageSize=20&JobQueryId=&JobTitleCodes[]=.

所以我认为使用RKObjectLoader对象并不关心objectLoader.serializationMIMEType = RKMIMETypeJSON;因为Content-Type仍为“Content-Type”=“application / x-www-form-urlencoded”;而不是“Content-Type”=“application / json”;

你认为这是一个错误还是正常行为?