0

我现在正在尝试将某些服务器 API 调用从 http 切换到 https,但我遇到了一个我无法向自己解释的问题。

从 http 切换到 https 后,我发现我的异步请求需要整整 60 秒才能完成,尽管服务器已经处理了请求。

没有抛出错误,没有发生超时或类似的事情,似乎只需要整整 60 秒才能注意到请求已完成。然后,在 60 秒后,它就完成了它应该做的事情。

这就是我正在做的事情:

NSString *theBody = @"param1=value1&param2=value2";
NSData *bodyData = [theBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSURL *url = [NSURL URLWithString:@"https://my.api.server.com/call"];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease];

[request setValue:@"My User-Agent" forHTTPHeaderField:@"User-Agent"];
// Tested this one, too. Yes, I did set to utf8 encoding when trying this
// [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:bodyData];
// testing only
// [request setTimeoutInterval:15];

[NSURLConnection sendAsynchronousRequest:request 
                                   queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           NSLog(@"Finished!");
                       }];

日志消息在 60 秒后被抛出。在输出日志消息之前刷新相应的数据时,我可以看到一切都已经发生了——我可以正确拉取刷新的数据。

我已经认为是我的服务器花了很长时间才响应,但我已经尝试使用 Ruby 作为快速测试运行相同的请求并且它工作正常。

有谁知道这里会发生什么?

提前致谢

阿恩

4

1 回答 1

0

实际上,这似乎是一个服务器问题。我通过设置修复它

keepalive_timeout 0

在我的 nginx 的配置文件中。

于 2012-04-17T16:33:19.403 回答