【发布时间】:2013-05-04 10:21:27
【问题描述】:
我需要连接的后端 API 大约需要 3-4 分钟才能返回响应。 iOS 客户端似乎正好在 60 秒时超时(这是默认值),我不知道如何延长该超时时间。
我尝试将 NSURLRequest 的 timeoutInterval 设置为一个较大的数字,并设置 Connection: Keep-Alive 标头,但我没有运气。这是我正在使用的代码,省略了一些 API 细节:
NSURL *url = [NSURL URLWithString:@"myAPI"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
NSString *postString = @"key1=val1&key2=val2...";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
request.timeoutInterval = 600.0f;
[request setValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSLog(@"data = %@", data);
}];
即使后端 API 仍在处理请求,也不返回任何数据并且所有响应头字段都为空。
我听说我可能需要设置一个称为“socketTimout”间隔的东西,以便套接字知道保持连接打开更长时间,但我不知道在哪里设置。
【问题讨论】:
-
您确定服务器上的超时时间足够大吗?
标签: iphone ios objective-c cocoa-touch