iOS – AFNetWorking post方法将数组作为参数上传

栏目: IOS · 发布时间: 6年前

内容简介:在最近的一个项目中后段要求直接post 一个数组位参数传给服务器,在之前的项目中,我们只是将字典作为参数传给服务器,直接将字典作为参数的情况并不多见。于是在网上查阅了一些资料发现很多人都是将数组转成json然后再去上传,但是我传过去之后,服务器告诉我参数错误 WTF!!最后发现罪魁祸手居然是AFNetWorking框架的问题上传的参数格式

在最近的一个项目中后段要求直接post 一个数组位参数传给服务器,在之前的项目中,我们只是将字典作为参数传给服务器,直接将字典作为参数的情况并不多见。于是在网上查阅了一些资料发现很多人都是将数组转成json然后再去上传,但是我传过去之后,服务器告诉我参数错误 WTF!!

最后发现罪魁祸手居然是AFNetWorking框架的问题

iOS – AFNetWorking post方法将数组作为参数上传

上传的参数格式

修改方法如下

找到AFNetWorking 下的AFURLRequestSerialization.m文件然后再找到AFQueryStringPairsFromKeyAndValue方法会看到下图这句话

iOS – AFNetWorking post方法将数组作为参数上传

直接跟改为

for (id nestedValue in array) {
[mutableQueryStringComponents addObjectsFromArray:
AFQueryStringPairsFromKeyAndValue(
      [NSString stringWithFormat:@"%@[%lu]", key,(unsigned long)[array indexOfObject:nestedValue]], nestedValue)];
}

然后直接传数组就好了

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager] ;
    
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    
    

[manager.requestSerializer setValue:[[NSUserDefaults standardUserDefaults]

objectForKey:@”token”] forHTTPHeaderField:@”token”];          manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:                                                             @”application/json”,                                                              @”text/json”, @”text/html”,                                                              @”text/plain”,                                                               @”text/javascript”,                                                               nil];          manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];         NSString *url = [NSString stringWithFormat:@”%@”,@“你的url”] ;        NSDictionary *parameter = @{                                     @”goodsName” : [self stringForNull:self.goodsDetailDict[@”goodsName”]],                                     @”goodsId” : self.idString,                                     @”number” : @”1″                                 } ;         NSArray *parameterArr = [NSArray arrayWithObject:parameter] ;         NSLog(@”url = %@”,url) ;     NSLog(@”parameter = %@”,parameterArr) ;

[manager POST:url

parameters:parameterArr

progress:nil

success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

NSDictionary *dict = (NSDictionary *)responseObject ;

NSLog(@”dict = %@”,dict) ;

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@”error%@”,error) ;

}]

;

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25350.html

iOS – AFNetWorking post方法将数组作为参数上传

iOS – AFNetWorking post方法将数组作为参数上传 微信打赏

iOS – AFNetWorking post方法将数组作为参数上传 支付宝打赏

感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

敏捷软件开发

敏捷软件开发

Robert C.Martin,、Micah Martin / 邓辉、孙鸣 / 人民邮电出版社 / 2010-12 / 79.00元

要想成为一名优秀的软件开发人员,需要熟练应用编程语言和开发工具,更重要的是能够领悟优美代码背后的原则和前人总结的经验——这正是本书的主题。本书凝聚了世界级软件开发大师Robert C. Martin数十年软件开发和培训经验,Java版曾荣获计算机图书最高荣誉——Jolt大奖,是广受推崇的经典著作,自出版以来一直畅销不衰。 不要被书名误导了,本书不是那种以开发过程为主题的敏捷软件开发类图书。在......一起来看看 《敏捷软件开发》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试