2015-09-09 13 views
6

多くのHTTP呼び出しを行うアプリケーションをデバッグしようとしています。私は私のplistに例外を追加する方法を理解kCFStreamErrorDomainSSLの中断

2015-09-08 17:21:01.458 MyApp[3186:3064431] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) 

が、これらの要求は要求されているかを見るために失敗しているブレークポイントを追加する方法があります:私は、コンソールでこれを見ていますか?

答えて

3

HTTPProtocol::failWithStreamErrorおよび/またはStrictSecurityPolicy::logInsecureLoadFailureにシンボリックブレークポイントを追加してみてください。

(この例外は、実際の要求を作成するコードと非同期に発生するので、これは残念ながら、それが簡単に実際の要求のスタックトレースを取得するために加えることはできません。しかし、それはとにかくあなたを助けるかもしれない。)

+1

それは 'StrictSecurityPolicy :: logInsecureLoadFailure'に壊れたときにレジスタ' $のx1'の外にURLをつかむことができるように見えます。 –

+0

そして、まれに、要求がどこから来ているのかわからない場合は、興味深いすべてのURL関連メソッド(NSURLConnectionの初期化子と同期ロードメソッド、NSURLSession * TaskクラスURLからデータを取得するためのNSStringメソッドやNSDataメソッド)、接続オブジェクトやタスク、URLを出力し、障害ブレークポイントに到達するまで待ってから、結果のデバッグ出力でURLを検索します。 – dgatwood

6

私はありませんでしたそれらのブレークポイントを追加するときにスタックトレースの多くを行うことができます。しかし、このブログの記事は、私が失敗したドメインを見つけ出す助け:

http://timekl.com/blog/2015/08/21/shipping-an-app-with-app-transport-security/

TL; DR:(:http://nshipster.com/launch-arguments-and-environment-variables/あなたが手を必要とする場合、どのように環境変数を設定するには、1)環境変数CFNETWORK_DIAGNOSTICSを設定します。これにより、コンソールに表示されるファイルにすべてのCFNetworkアクティビティが記録されます。 「失敗しました」というファイルを検索すると、失敗したリクエストと失敗したリクエストを確認できます。

+0

$ x1を印刷しても効果がありませんでしたか?決定的かどうかを判断しようとしています... –

+1

これは非常に役に立ちます! –

+0

https://developer.apple.com/library/ios/qa/qa1887/_index.html –

-1

iOS 9で作業中、info.plistに以下の行を追加する必要があります。そうしないと、API呼び出しが機能しません。

<key>NSAppTransportSecurity</key> 
<dict> 
<key>NSExceptionDomains</key> 
<dict> 
<key>dev.YourCompanyName.com</key> 
<dict> 
<key>NSIncludesSubdomains</key> 
<false/> 
<key>NSExceptionAllowsInsecureHTTPLoads</key> 
<true/> 
<key>NSExceptionRequiresForwardSecrecy</key> 
<true/> 
<key>NSExceptionMinimumTLSVersion</key> 
<string>TLSv1.2</string> 
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> 
<true/> 
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
<true/> 
<key>NSThirdPartyExceptionMinimumTLSVersion</key> 
<string>TLSv1.2</string> 
<key>NSRequiresCertificateTransparency</key> 
<false/> 
</dict> 
</dict> 
</dict> 
+0

これも正確ではありません。エンドポイントのセキュリティに応じて、これらのキーの一部が必要な場合と必要ない場合があります。私の質問は、特に、迷惑な安全でない呼び出しを中断/デバッグすることです。 https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/ –