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 回答