具体这个问题的引起原因还找不到是前台问题还是后台问题,请原谅我出问题的网址也不能发出来。
现在先看一下控制台的打印错误
现在可以明确的看到,后台返回的网页状态码为:
__NSCFLocalDataTask: 0x1462ee50>{ taskIdentifier: 1 } { completed }-->Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x14712be0> { URL: http://testapi.zhudd.com/v3/home/getBanner } { status code: 500
我现在把链接放在paw中跑一遍
OK,现在我们可以明显看出来,我没有传任何参数,接口都是500.不管咱们前台可不可以解决,先把这个问题告诉后台,他们午饭都会在想这个bug!
到这里还没有完,毕竟让后台吃不下去饭,并不能解决问题,接着上图
有参数!!现在可以明确的看到,在status code等于500时,我们依然接收到了返回值。到这里有的人应该会明白为什么我们使用NSURLSessionDataTask和安卓可以请求,但是AFNetworking不可以请求的原因了。因为我们一般的请求并不会用网页的status code来判断我们的这次请求是否成功,所以会造成一种AFNetworking不可以请求的假象。
到了现在说一下解决方案:
第一个最简单,把锅丢给后台。
第二个也不难,修改一下AFNetworking的成功失败判断条件。
AFNetworking原生库只判断error,如果有错误就走失败回调,我们只需要加一个只要responseObject不为空就走成功回调就可以了。
有错误请指正,谢谢