AFNetworking https 请求不起作用

Posted

技术标签:

【中文标题】AFNetworking https 请求不起作用【英文标题】:AFNetworking https request not working 【发布时间】:2013-11-06 08:56:52 【问题描述】:

我尝试连接到 https 服务器,但收到错误 -1012(NSErrorFailingURLKey)。如果我尝试连接到 http,那么一切都很好。但我应该连接到 https。它可以是什么?我尝试通过 AFNetworking v1.0 和 v2.0 进行连接。我使用过 AFHTTPRequestOperation、AFHTTPRequestOperationManager、AFHTTPClient 等。 附:当我尝试通过 firebug 连接到 https 时,一切都很好。我的意思是,服务器运行良好。

【问题讨论】:

你能显示一些代码吗? 【参考方案1】:

尝试使用#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ 1 以允许无效或自签名证书。

默认情况下是不允许的,见AFURLConnectionOperation.h

【讨论】:

【参考方案2】:

AFNetworking 中的安全策略声明allowInvalidCertificates 默认为NO。您需要将其设置为YES

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production

更多详情: https://github.com/AFNetworking/AFNetworking#security-policy

【讨论】:

【参考方案3】:

我正在使用较新版本的 AFNetworking 库,但 #define 无法正常工作。

问题已通过在客户端本身上将属性 allowsInvalidSSLCertificate 设置为 YES 得到解决:

httpClient.allowsInvalidSSLCertificate = YES;

【讨论】:

@ghazi_jaffary 它是 AFHTTPClient 的一个实例 好的,我一直在使用没有 AFHTTPClient 类的 2.0 版本,所以我想知道。谢谢 什么“新版本”。请说明。 HTTPClient 甚至可以与 AFNetworking v2 一起使用吗?【参考方案4】:

它对我有用:

AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST: urlString parameters:bodyDict
     success:^(NSURLSessionDataTask *task, id responseObject)

     return;
     
     failure:^(NSURLSessionDataTask *task, NSError *error)

      failBlock(error);
     
 ];

【讨论】:

以上是关于AFNetworking https 请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking Post 请求不起作用

AFNetworking JSON 请求不起作用

obj-c AFNetworking 2.0 POST 请求不起作用

AFNetworking-2 waitUntilFinished 不起作用

AFNetworking XML 请求问题

AFNetworking 3.0 后台上传不起作用