gpt4 book ai didi

Objective-C/ cocoa : How do I accept a bad server certificate?

转载 作者:太空狗 更新时间:2023-10-30 03:28:28 28 4
gpt4 key购买 nike

使用 NSURLRequest,我正在尝试访问证书已过期的网站。当我发送请求时,我的 connection:didFailWithError 委托(delegate)方法被调用并提供以下信息:

-1203, NSURLErrorDomain, bad server certificate

我的搜索只找到一个解决方案:NSURLRequest 中的隐藏类方法:

[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:myHost];

但是,出于显而易见的原因,我不想在生产应用中使用私有(private) API。

有什么建议吗?我是否需要使用 CFNetwork API,如果需要,两个问题:

  • 我可以使用任何示例代码来开始吗?我没有在网上找到任何内容。
  • 如果我为此使用 CFNetwork,是否必须完全放弃 NSURL?

编辑:

iPhone OS 3.0 引入了一种支持的方法来执行此操作。更多详情:How to use NSURLConnection to connect with SSL for an untrusted cert?

最佳答案

执行此操作的受支持方法需要使用 CFNetwork。您要做的是将 kCFStreamPropertySSLSettings 附加到指定 kCFStreamSSLValidatesCertificateChain == kCFBooleanFalse 的流。下面是一些执行此操作的快速代码,减去检查有效结果添加清理。完成此操作后,您可以使用 CFReadStreamRead() 获取数据。

CFURLRef myURL = CFURLCreateWithString(kCFAllocatorDefault, CFSTR("http://www.apple.com"), NULL);
CFHTTPMessageRef myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, CFSTR("GET"), myURL, kCFHTTPVersion1_1);
CFReadStreamRef myStream = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, myRequest);
CFMutableDictionaryRef myDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDict, kCFStreamSSLValidatesCertificateChain, kCFBooleanFalse);
CFReadStreamSetProperty(myStream, kCFStreamPropertySSLSettings, myDict);
CFReadStreamOpen(myStream);

关于 Objective-C/ cocoa : How do I accept a bad server certificate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com