我正在使用名为“Poster”的 Firefox 工具来检查我的 Web 服务是否正常工作。当我发布请求时,我在要发送的内容中发送一个 JSON 对象(也称为 HTTP body data )。
当我按下 POST 按钮时,结果很好。
现在我想对 RestKit 做同样的事情在objective-c中:
NSString *squery = @"{\"Sort\":\"Relevance\",\"DaysToSearch\":0,\"WorkType\":\"\",\"ageSize\":20,\"LastRunCount\":0,\"IndustryCodes\":[\"\"],\"AccountId\":27,\"Experience\":\"\",\"GetResultCount\":0,\"Keywords\":\"iOS\",\"ageIndex\":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 扩展“海报”中,如果我使用与“application/json”不同的矿类型,比如说“application/x-www-form-urlencoded”,我会收到相同的错误:“发生非故障异常。 "
objectLoader.serializationMIMEType = RKMIMETypeJSON; 有问题吗? ???
马丁·马加基安
Best Answer-推荐答案 strong>
好吧,我想我知道了。
我用 激活了 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&ageIndex=0&DistanceFromLocation=250&ageSize=20&JobQueryId=&JobTitleCodes[]=.
所以我认为使用 RKObjectLoader 对象并不关心 objectLoader.serializationMIMEType = RKMIMETypeJSON;因为 Content-Type 仍然是 "Content-Type"= "application/x-www-form-urlencoded";而不是 "Content-Type"= "application/json";
您认为这是错误还是正常行为?
关于iphone - 使用 restkit 发送 HTTPBody 数据,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/9256732/
|