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的打赏,我们会更加努力!    如果您想成为作者,请点我


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

查看所有标签

猜你喜欢:

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

.NET框架程序设计

.NET框架程序设计

(美)Jeffrey Richter、(美)Francesco Balena / 李建忠 / 华中科技大学出版社 / 2004-1 / 54.00元

Microsoft.NET框架为简化开发与卫联网无缝连接的应用程序和组件提供了强大的技术支持,如ASP.NET Web窗体、XML Web服务以及Windows窗体。本书的目的在于展示.NET框架中公共语言运行库存的核心内容。全书由两位广受尊敬的开发者/作者完成,并假设读者理解面向对象程序设计的基本概念,如数据抽象、继承和多态。书中内容清楚地解释了CLR的扩展类型系统,CLR如何管理类型的行为,以......一起来看看 《.NET框架程序设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具