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


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

查看所有标签

猜你喜欢:

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

信息烟尘

信息烟尘

戴维·申克 / 黄锫坚 / 江西教育出版社 / 2002 / 14.50元

今天,我们被大量的信息淹没了:传真、电子邮件、各种新闻、消息和铺天盖地的广告,正如人们以前预示的那样:出现了一个令人鼓舞的信息时代,媒体专家兼网络评论员戴维·申克透过这些繁荣的表象,揭示了大量的无用的信息对我们造成的干扰,或者说,“信息烟尘”对我们个人的健康(包括精神上的和肉体上的)及对社会造成的极大危害。这《信息烟尘:在信息爆炸中求生存》宣告了“信息时代”神话的破灭。一起来看看 《信息烟尘》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具