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 请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章
obj-c AFNetworking 2.0 POST 请求不起作用