0

ASIHTTPRequest を使用して REST サーバーと通信する iOS アプリがあります。サーバーは、ポート 80 (HTTP) およびポート 443 (HTTPS) での接続をサポートしています。ポート 443 で GeoTrust/RapidSSL 証明書を使用しています。ユーザーは、使用するプロトコルを選択するようにアプリを構成できます。WireShark を使用してサーバー上のトラフィックを監視していますが、ユーザーが HTTP と HTTPS を切り替えると、次にリクエストを送信したときに、両方のプロトコルのトラフィックを確認でき、その後のすべてのリクエストが新しく選択したプロトコルのみ。

また、アプリがシャットダウンされると、いくつかのパケットが送信されますが、これはある種のクリーンアップであると思われます。これらの最終パケットのタイプ (HTTP/HTTPS) は、アプリが使用しているプロトコルによって異なります。アプリが同じアプリ セッション中に HTTP と HTTPS の両方を使用するように設定されている場合、アプリのシャットダウン時に HTTP と HTTPS の両方のパケットが送信されます。これらのシナリオは私には正しくないように思われ、ASIHTTPRequest が完全にクリアされていないことを示唆しています。リクエストが 'HTTP/0.9 200 OK' という応答で完了したときに、時折エラーが発生しますが、データが返されません。これは、HTTP を使用してポート 443 と通信しようとしたことが原因であると考えられます。

私の疑惑が真実であることを誰か確認できますか? 次のリクエストを別のプロトコルで送信できるように、ASIHTTPRequest の後にそれをクリアするために使用する必要があるコマンドはありますか?

4

1 に答える 1

0

表示されているのは、HTTP 永続接続の目的のように聞こえます。http://en.wikipedia.org/wiki/HTTP_persistent_connectionなどを参照してください。

あなたがする必要があることは何もありません、これのどれも害を及ぼしていません. プロトコルを切り替えるときに表示されるいくつかの http パケットは、古いソケットが閉じられているだけだと思います。TCP ポート 80 へのパケットが表示されているだけで、データや実際の http 要求を含むパケットは表示されていないと思います。

于 2012-05-04T15:39:22.360 に答える