iOS开发 AFNetworking 3.0使用遇到的问题补充

作者: Ke_Wang | 来源:发表于2016-02-17 09:35 被阅读16631次

前段时间写了一个iOS开发之AFNetworking 3.0.4使用这篇文章,是基本的用法,昨天在使用的时候又出现了几个问题,特地俩记录下,希望能帮到大家!

问题一

我是做一个获取手机验证码的功能,进行一个网络请求,验证码也发给我了,后台的也跟我说请求成功了,但是我这边打印信息显示直接进入了错误的回调。。。如下图:


验证码获取返回格式问题

报错说是返回类型不一致,后来查明原因,是返回的格式问题(虽然后台跟我说返回的json)需要添加上这么一句话:

    //如果报接受类型不一致请替换一致text/html或别的
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

此问题解决!

问题二

由于以前我用AFN,这次偷懒直接把以前的代码复制了一下,然后用的时候后台跟我说穿不过去参数,我这边确定参数什么的都写了,也没写错,但是还是穿不过去参数。于是我查了一下代码,发现代码中有这两句话:


声明返回类型

声明请求和返回的数据是json。问题就出在第一句话上,因为我这边声明了传过去的参数是json格式,但是我写的格式并不是json的,AFN就把我的参数过滤了,所以后台那边收到的我传过去的参数就是NULL了。。(这是我自己的理解,有不对的地方希望大神能够指正一下)
解决办法我是吧两个直接注释了(因为我知道返回的是json,第二句加不加都一样)。
在这里,第一句加上是铁定会错的,第二句就无所谓了。。。


目前遇到的问题就这么两个,以后如果遇到的话再来添加。


PS:再补充一下,现在好多朋友还在用AFN2.0版本,它是基于NSURLConnection写的,但是苹果在Xcode7 中弃用了这个(虽然还可以使用),改用NSURLSession,而AFN3.0就是基于NSURLSession来做的,AFN3.0中删除了 基于NSURLConnection的东西,如以前常用的AFURLConnectionOperation、AFHTTPRequestOperation、AFHTTPRequestOperationManager等,AFN 3.0版本现在正式支持的iOS 7, Mac OS X的10.9, watchOS 2 , tvOS 9 和Xcode 7,所以觉得还是用新的好,万一彻底删除了NSURLConnection,那岂不是全部要瞎了。。。

AFN 2.0升级到最新的版本API,可以看这篇文字专门过渡的。

有什么问题希望大家能够指出,谢谢大家!

相关文章

网友评论

  • ShineYangGod:终于解决了,就是那句话,哎
  • ab3441a8feb2:楼主 第二个问题 我传参数 加了请求头 你把第一行删除怎么添加 请求头啊!!!在线等
  • 萨达搜索到:想请教下楼主,本人新手, 那个循环上传是要如何处理呢 比如本地有n个文件需要上传 每上传完一个 我需要告诉用户进度的这种
    萨达搜索到:@wave_developer 有木有直接贴代码的 大神
    dev_wave:可以写个队列呀
    Ke_Wang:@紫霞大仙F 这个我没有干过呀 也不敢乱说 。。。你再查一下资料啊。。
  • 84ac3d676fbe:使用AFNetWorking 3.0.4请求数据,既不执行成功的方法,也不执行失败的方法,该怎么解决。
    Ke_Wang:@娄亚雄 估计是你们后台服务器那边的,没有回调, 你可以跟后台的对一下看看
    84ac3d676fbe:传完参数之后不进入成功的方法也不进入失败的方法
    Ke_Wang:打个断点看下进没进呀
  • 缺舟:你好,大神,我遇到了你说的第二个问题,但是我即便使用了你说的方法也无法解决,在请求中我使用上传文件流的方式传递参数,但是后台无法接受到参数,一直是null。
    而我使用普通的网络请求(就是不能上传文件的请求方法)就可以传递参数,我想问哈有解决的建议吗?
    缺舟: @WK_IOSDevelpoer 你解决了没有吗 我那个其实我是传过去了 是后台解析错误了
    Ke_Wang:@红薯大大 你可以看下你传过去的是什么格式 看看后台返回来的是什么格式的。。。。
    云逸致:@缺舟 我现在也遇到了这样的问题,问一下你解决了吗?
  • 1b2ae550dc99:请问,网络请求取消,怎么解决?
    Ke_Wang:@行进的NSLog 代理中好像有个方法,能停止的,你找一下,我也忘了具体叫啥了:joy::joy:
    1b2ae550dc99:我发了一个请求,这时候网络不好,还在转圈,我不想等了,直接点击返回按钮,pop出了这个界面,但是请求还在继续,这个时候应该怎么结束这个请求呢
    Ke_Wang:@行进的NSLog 取消?什么情况?
  • 漂泊的煙烣:请问 AFNetworking 3.0 同步请求怎搞?
    CL0601:@漂泊的煙烣 亲 你的那个方法会直接卡死的 无法返回的 求解答
    漂泊的煙烣:@子书不言 NSParameterAssert(manager); // prevent infinite loop
    dispatch_async(dispatch_get_global_queue(0, 0), ^{

    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

    NSLog(@"1111111111");

    [manager GET:self.paramsModel.apiUrl parameters:self.paramsModel.paramsDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {

    [self responseResult:responseObject successBlock:successBlock];
    dispatch_semaphore_signal(semaphore);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    [self responsResultError:error failure:failureBlock];
    dispatch_semaphore_signal(semaphore);
    }];

    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
    NSLog(@"333333333");
    });
    子书不言:@漂泊的煙烣 层主解决了吗,我也在搞这个
  • R呀呦:楼主遇到过这个问题么 Domain=NSURLErrorDomain Code=-999 "cancelled"
    王天琦:@R呀呦 你好层主, 麻烦问一下这个解决了吗?
    R呀呦:@WK_IOSDevelpoer fan迁移到3.0之后,post请求https之后出现的
    Ke_Wang:@R呀呦 没有啊 你这是什么情况下遇到的呀
  • sea7reen: manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil];
    Ke_Wang:@兰州一碗面 返回的什么?
    兰州一碗面:@niu神DNS 返回数据流是怎么解决的?
    niu神DNS:@sea7reen 这是对的么? 运行之后 直接返回的数据流
  • 幻凌风:呵呵,第二个问题跟我前两天遇到的壹样,虽然我是小白,不太懂,有时候也就是看着别人写的东西,觉得会用就行!我以前想法也简单,基本都不加这两句,正好这次上传头像图片,不想翻以前自己写习惯的代码,索性就把朋友给我的头像上传代码复制了过来,结果发现上传报错,把这两句屏蔽掉之后OK了 。。。

本文标题:iOS开发 AFNetworking 3.0使用遇到的问题补充

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