美文网首页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