您的位置:首页 > 理论基础 > 计算机网络

AFNetworking网络请求失败

2016-01-23 17:12 555 查看
之前iOS开发一直用ASIHTTPRequest进行网络请求,但是这个框架很长时间已经不更新了。我了解到目前很多应用都在使用AFNetworking,今天尝试了一下,发现了不少问题。

目前已经是AFNetworking 3.0了,很多类已经被废弃了,我使用如下代码进行网络请求测试。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"your url"
parameters:nil
progress:nil
success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"response:%@", responseObject);
}
failure:^(NSURLSessionTask *task, NSError *error) {
NSLog(@"error:%@", error);
}];


结果出现了如下的错误信息。

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.


这是因为苹果引入了ATS特征,要求应用内网络请求采用HTTPS协议,这样主要是为了安全。但是目前接口采用HTTP协议,很难做出修改,解决方案如下。

Info.plist中添加NSAppTransportSecurity,类型为Dictionary。

在NSAppTransportSecurity下添加NSAllowsArbitraryLoads,类型为Boolean,值设为YES。

继续进行测试,又发现了如下问题。

error:Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html"


这个问题是因为AFNetworking默认的接收类型不包括”text/html”,需要到“AFURLResponseSerialization.m”中修改为以下代码,即添加其中缺少的@”text/html”。

self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/javascript", nil];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: