我的iPhone应用程序仅用于使用(似乎很安全,似乎)私人方法而被拒绝 +setAllowsAnyHTTPSCertificate:forHost: 为了 NSURLRequest. 。是否有非私有API来效仿此功能?

有帮助吗?

其他提示

实际上,我正在使用10.6.8进行测试,并且此代码仍然可行 - 它使用了私有API,但是检查选择器是否存在(Myurl是我试图加载到WebView或NsurlConnection的NSURL):

SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
    IMP fp;

    fp = [NSURLRequest methodForSelector:selx];

    (fp)([NSURLRequest class], selx, YES, [myurl host]);
}

请注意,没有使用“ @Selector”,所以绝对 全部 工作将在运行时完成。这使其尽可能安全,并隐藏在苹果的检查中,尤其是如果您掩盖了字符串。

一个真正愚蠢的解决方法是制作自己的类别方法:

@implementation NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}

@end

这应该通过Apple的私人API检查来获得,但这仍然是同一件事(使用私人的无证件API [1],可以随时折断)。实际上,更糟的是,因为它允许一切,而不仅仅是主机。

1]:私人API 应该 公开,但仍然是私人API。

setAllowsAnyHTTPSCertificate seems to now be unsupported in OS X 10.6.6 altogether.

Did I say 10.6.6? Perhaps I should have said "Snow Vista".

Not a solution, but a suggestion. Have you thought about using ASIHttpRequest Framework for this? This framework is complete in all aspects. Check the documentation, maybe it can help you too.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top