ios – RestKit 0.20 JSON对象被序列化为POST主体中的GET样式请求

ios – RestKit 0.20 JSON对象被序列化为POST主体中的GET样式请求,第1张

概述我刚刚开始使用RestKit 0.20.0,我在创建格式良好的 JSON请求时遇到了麻烦. 我得到这个(从休息工具包日志): request.body=title=A%20glorious%20walk%20in%20the%20woods&startDateTime=2013-01-13%2016%3A09%3A33%20%2B0000&endDateTime=2013-01-13%2016%3 我刚刚开始使用RestKit 0.20.0,我在创建格式良好的 JSON请求时遇到了麻烦.

我得到这个(从休息工具包日志):

request.body=Title=A%20glorIoUs%20walk%20in%20the%20woods&startDateTime=2013-01-13%2016%3A09%3A33%20%2B0000&endDateTime=2013-01-13%2016%3A09%3A43%20%2B0000&points[][longitude]=-122.0307725&points[][latitude]=37.3310798&points[][longitude]=-122.0307334&points[][latitude]=37.33154242&points[][longitude]=-122.03075743&points[][latitude]=37.33138305&points[][longitude]=-122.03075659&points[][latitude]=37.33131185&points[][longitude]=-122.03057969&points[][latitude]=37.33156519&points[][longitude]=-122.03075535&points[][latitude]=37.33144466&points[][longitude]=-122.03076342&points[][latitude]=37.33123666&points[][longitude]=-122.03074488&points[][latitude]=37.33149482&points[][longitude]=-122.03068145&points[][latitude]=37.33155419&points[][longitude]=-122.03062909&points[][latitude]=37.33156564&points[][longitude]=-122.03076853&points[][latitude]=37.33115792

当我想要这个(带有大括号的普通Json对象和points属性的数组)时:

{    Title: "Something",startDateTime: "dateinfo",endDateTime: "moredateinfo",points: [        {            latitude: "37.33131313",longitude: "122.4325454"        },{            latitude: "37.33131313",longitude: "122.4325454"        }    ]}

我有两个主要对象:DLWalk包含一个DLPoint对象的NSSet(它们是CoreData对象,但目前我忽略了它,只关注创建http请求)

这是我用来创建请求的代码:

// Point mapPingRKObjectMapPing *mapPingPoint = [RKObjectMapPing requestMapPing];[mapPingPoint addAttributeMapPingsFromArray:@[@"latitude",@"longitude"]];RKRequestDescriptor *reqDescPoint = [RKRequestDescriptor requestDescriptorWithMapPing:mapPingPoint objectClass:[DLPoint class] rootKeyPath:nil];// Walk mapPingRKObjectMapPing *mapPingWalk = [RKObjectMapPing requestMapPing];[mapPingWalk addAttributeMapPingsFromArray:@[@"endDateTime",@"startDateTime",@"Title"]];RKRequestDescriptor *reqDescWalk = [RKRequestDescriptor requestDescriptorWithMapPing:mapPingWalk objectClass:[DLWalk class] rootKeyPath:nil];// define the relationship mapPing[mapPingWalk addPropertyMapPing:[RKRelationshipMapPing relationshipMapPingFromKeyPath:@"points" toKeyPath:@"points" withMapPing:mapPingPoint]];RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://192.168.1.10:8080"]];                            [manager addRequestDescriptor:reqDescWalk];                            [manager addRequestDescriptor:reqDescPoint];                            [manager addResponseDescriptor:responseDescriptor];// POST to create[manager postObject:walk path:@"/walk/save" parameters:nil success:nil failure:nil];

所以问题是:为什么我的POST主体中没有看到正常的JsON对象?

解决方法 你得到的是request.body是URL编码的,这是RESTKit的默认行为,通常工作正常.

如果您希望它是JsON编码的,只需在发布查询之前插入此行

manager.requestSerializationMIMEType=RKMIMETypeJsON;

有关这方面的更多信息,请查看RKObjectManager类的api文档:
requestSerializationMIMEType

总结

以上是内存溢出为你收集整理的ios – RestKit 0.20 JSON对象被序列化为POST主体中的GET样式请求全部内容,希望文章能够帮你解决ios – RestKit 0.20 JSON对象被序列化为POST主体中的GET样式请求所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存