iphone - 使用 NSURLConnection 缓存和查询 HTTP header 的问题

标签 iphone objective-c

我正在尝试编写一个粗略的应用程序来循环查询从我的服务器返回的一些 HTTP header 字段,以便找出哪些服务器响应正常。我的服务器用这样的 header 响应: 服务器 = 服务器 1(或服务器 2、服务器 3 等)。

不幸的是,当我这样做时,我一次又一次地从应用程序中得到相同的服务器名称,除非我停止它并再次运行它,此时我得到一个不同的服务器。我怎样才能阻止这种情况发生?我需要应用程序将每个连接都视为全新连接,但它似乎缓存了一些东西并且看起来来自同一个地方,所以我的负载平衡器返回相同的服务器名称。

我可以通过在不关闭 Safari 的情况下重复访问我的 URL 来在 Safari 中复制类似的行为(预期) - 它每次都获得相同的服务器,但是如果我关闭 Safari 然后返回它,我会得到一个新服务器。

我使用的代码如下:

for (int i = 0; i < 999; i++) {
    request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

    [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: nil];
    if ([response respondsToSelector:@selector(allHeaderFields)]) {
        dictionary = [response allHeaderFields];
        fullHeaderString = [dictionary description];
    }
}

我怎样才能使这个连接每次都被视为一个新连接?

干杯, 汤姆

最佳答案

您至少可以通过两种方式确保内容每次都是最新加载的:

  1. 添加“pragma: no-cache” header 到您的 http 响应。这应该 使http客户端不缓存 回复。
  2. 添加随机查询 请求的参数如:url = "http://myhost.com/controller/blabla?rand="+ Math.random(...)。这将使 url 每次都是唯一的,但是 服务器可能不会关心 参数所以它仍然是 安全。

希望对你有帮助

关于iphone - 使用 NSURLConnection 缓存和查询 HTTP header 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193831/

相关文章:

iphone - 在任何 iPhone/iPod touch 设备上运行应用程序时出现 "There was an internal API error."

ios - 在应用商店中仅限制 Ipad 1

ios - objective-c 在发送到 web 服务后卡住

objective-c - 为什么在 Swift 中使用 NSArray 是可变的?

objective-c - 将 NSArray 项目与 NSArray 中的所有其他项目进行比较

iOS:数据类型分配的内存消耗

iphone - Xcode 分析和构建会跳过每个文件

mobile-safari - 全屏打开网页时,iPhone是否支持cookie?

iphone - 在两台 Mac 上开发 iOS 应用程序?

ios - 从 C# 到 Objective C 的 Http 请求