我现在正在尝试将某些服务器 API 调用从 http 切换到 https,但我遇到了一个我无法向自己解释的问题。
从 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 作为快速测试运行相同的请求并且它工作正常。
有谁知道这里会发生什么?
提前致谢
阿恩