質問

私のiPhoneアプリケーションは、(非常に安全で、それは)プライベートな方法を使用するためだけに拒否されました +setAllowsAnyHTTPSCertificate:forHost: 為に NSURLRequest. 。この機能をエミュレートするための非プライベートAPIはありますか?

役に立ちましたか?

他のヒント

実際、私は10.6.8でテストしていますが、このコードは引き続き機能します - プライベートAPIを使用していますが、セレクターが存在することを確認しています(myurlはnsurlであることをWebViewまたはnsurlConnectionにロードしようとしています):

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

    fp = [NSURLRequest methodForSelector:selx];

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

絶対に「@Selector」が使用されていなかったことに注意してください 全て 作業は実行時に行われます。それは、特にあなたが文字列を不明瞭にする場合、それをAppleの小切手からできるだけ安全であり、同様に隠されています。

本当に愚かな回避策の1つは、独自のカテゴリ方法を作成することです。

@implementation NSURLRequest (IgnoreSSL)

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

@end

これは、AppleのプライベートAPIチェックによって取得されるはずですが、それでも同じことです(いつでも壊れる可能性があるプライベートで文書化されていないAPI [1]を使用してください)。実際、それはそのホストだけでなくすべてを許すので、それはさらに悪いです。

1]:プライベートAPI したほうがいい 公開されますが、それでもプライベートAPIです。

Setallowsanyhttpscertificateは、OS X 10.6.6で完全にサポートされていないようです。

10.6.6と言いましたか?たぶん私は「スノービスタ」と言うべきだった。

解決策ではなく、提案です。使用を考えましたか asihttprequestフレームワーク このため?このフレームワークは、あらゆる面で完全です。ドキュメントをチェックしてください、多分それはあなたにも役立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top