美文网首页iOS开发技术讨论swift编程开发iOS Developer
AFNetworking 将数组作为字段参数传给服务器

AFNetworking 将数组作为字段参数传给服务器

作者: 风见隼人Akf | 来源:发表于2016-07-27 15:53 被阅读2520次

前言

之前的项目上传数据的格式要求将数组作为字段数据进行post,结果直接上传之后发现服务器收到的数据之间带有[] ,网上找了各种资料无果。最后在AFNetworking的源码里找到了解决方法。

解决办法

1.在AFNetworking的源码中找到AFURLRequestSerialization这个类;

2.在.m文件中在AFQueryStringPairsFromKeyAndValue这个方法中,找到

else if ([value isKindOfClass:[NSArray class]]) {

         NSArray *array = value;

for (id nestedValue in array) {

[mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];

}

随后将

[mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; 

中的"[NSString stringWithFormat:@"%@[]", key]" []去掉!

完成以上修改之后再上传数组字段数据就OK了!

当然这样的上传结构最好建议还是接口进行修改。

如果觉得对你有帮助的,麻烦点个赞哈~谢谢!

相关文章

网友评论

  • wahkim:你好 。请教一下
    你之前post上传的数组是这种格式的吗
    mobile = (
    {
    name = liyi;
    }
    )
    修改了你的办法后还是上传失败。你是有对数组进行处理吗
    风见隼人Akf:@我是你林哥哥呀 让后端联调一下看看是哪边的问题,再确认一下post过去的para格式
    wahkim:@风见隼人Akf 我数组里面是字典 服务端响应了 给了个报错的msg 我的天搞不定
    风见隼人Akf:@我是你林哥哥呀 首先我的方法只是去除了上传之后AF为数组类型添加的[]
    我的上传格式是:
    {mobile:[123,321,321],
    name:[liyi,liyi,liyi]
    }
    key对应一个arr
  • JUST4FUN_:这个版本的AF ,用NSSet 就可以了
    JUST4FUN_:@风见隼人Akf 对 这是NSSet 的 特性,针对这个问题,并没有影响。
    风见隼人Akf:@iMurphy NSSet AF一直支持,但是NSSet是无序的且不会添加重复的元素,这样的特性不一定能满足需求
  • seanward:我也是这样的问题,后来自己断点一点一点找出来了,但是我觉得是后台的问题,好像是后台的解析方式不是json,而是一个什么x-www-urlencod的方式。因为我之前其他公司也做过传直接传数组的,都没有问题。感觉好坑啊,而且个人认为,修改库的源码不好。但是我目前只能这样做
  • AgoniNemo:非常感谢,你的这个方法解决了我的问题,我想问下,如果接口要调整要怎么做?
    AgoniNemo:@风见隼人Akf 嗯,最后是传了字符串
    风见隼人Akf:@AgoniNemo 服务器兼容son字符串吧,传json字符串就不用改AF的源代码了

本文标题:AFNetworking 将数组作为字段参数传给服务器

本文链接:https://www.haomeiwen.com/subject/pgvojttx.html