4

Mac OS X (iphone ではない) から Web サーバーに https リクエストを同期的に送信しています

NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response   error:&error];

ただし、エラー Code=-1202 - "untrusted server certificate"が表示されます

Mac のキーチェーンにインストールしたサーバーからの自己署名証明書があります (ブラウザからの https 要求が正常に機能することを確認しました)。

データを非同期に送信して処理することで証明書を無視したくないdidReceiveAuthenticationChallenge

証明書がキ​​ーチェーンsendSynchronousRequestにインストールされている場合は機能しません。何か不足していますか?

4

1 に答える 1

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 コードを参照してください)。

サードパーティのライブラリについても言及しました。サードパーティのライブラリは、HTTP リクエストを非同期化するためにさまざまなアプローチを使用しているためです。NSURLConnectionDelegate を使用したくない理由により適している可能性があるため、それらを確認することをお勧めします。

于 2013-09-15T11:12:03.373 に答える