我正试图立即从http切换到https以进行某些服务器API调用,而我遇到的问题是我无法向自己解释。
在从http切换到https之后我发现我的异步请求需要整整60秒才能完成,尽管服务器已经处理了请求。
没有抛出错误,没有发生超时或类似的事情,它似乎需要整整60秒才能注意到请求已完成。然后,在60秒之后,它就完成了它的目的。
这就是我在做的事情:
NSString *theBody = @"param1=value1¶m2=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作为快速测试运行相同的请求并且它正常工作。
有谁知道这里会发生什么?
提前致谢
·阿尔
答案 0 :(得分:0)
实际上它似乎是一个服务器问题。我通过设置
修复了它keepalive_timeout 0
在我的nginx的配置文件中。