2011-01-27 6 views
0

NSURLConnectionを使用してWebサーバーと通信するアプリケーションがあります。自動プロキシ設定が有効になっていて、その設定のURLが使用できないサーバーを指している場合、NSURLConnectionの試行がタイムアウトエラーで失敗します。 NSURLConnectionは要求を再度行うと、直接接続を試みます(プロキシが失敗したことに注意してください)、要求は成功します。NSURLConnection proxy.pacのダウンロードが失敗した場合の自動直接接続

Safariは、プロキシのタイムアウトが発生したときにSafariが直接接続を試みることに気付きましたが、これは自動的に実行されます。私は最新のWebKitの夜間ソースをダウンロードし、ビルドし、これがどのように行われたのか把握しようとしました。私の人生にとって、私はWebKitがこの動作をどのようにするのか理解できません。 NSURLConnectionが作成されますが、-connection:didFailWithError:は呼び出されません。プロキシがタイムアウトした後、-connection:didReceiveResponse:デリゲートは直接接続したために呼び出されます。私が見ることができるWebKitコードの何も、このプロキシのタイムアウトを検出し、リロードを強制します。これは、NSURLConnection/NSURLRequestで発生している必要があります。

NSURLConnectionが自動的にプロキシの失敗で直接接続を再試行する方法を教えてください。 Safari/WebKitとまったく同じように動作します。

答えて

0

私はそれを理解しました。それは要求のタイムアウト間隔と関係していました。 NSURLRequestのデフォルトのタイムアウト間隔は60秒です。 NSURLConnectionが直接接続に落ちていないように、最初のプロキシタイムアウトが発生するまでにはほぼ90秒かかりました。要求のタイムアウトを増やしてしまえば、それは動作し始めました。

関連する問題