我正在使用
从 Mac OS X (而非iphone)向网络服务器发送https请求NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
但是我得到错误代码= -1202 - “不受信任的服务器证书”
我从服务器上获得了自签名证书,我在Mac的钥匙串上安装了该证书(并验证了来自浏览器的https请求正常)。
我不想通过异步发送数据和处理didReceiveAuthenticationChallenge
如果证书安装在钥匙串中,sendSynchronousRequest
不起作用。我错过了什么吗?
答案 0 :(得分:0)
据我所知,你不能用同步请求做到这一点。至少没有NSURLConnection。您可以使用ASIHTTPRequest,它看起来像这样:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setValidatesSecureCertificate:NO]
[request startSynchronous];
在谈到第三方库时,AFNetworking也可以(以多种方式)执行此操作,并且还可以选择同步工作。
#ifdef DEBUG
#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_
#endif
最后但并非最不重要的是,您可以在低级别并使用CFNetworking本身(您可以查看ASIHTTPRequest代码如何执行此操作)来执行此操作,但这可能会比使用NSURLConnectionDelegate添加更多的样板代码。
我还提到了第三方库,因为他们使用不同的方法来异步HTTP请求。我鼓励你看看它们,因为它们可能更适合你不想使用NSURLConnectionDelegate的原因。