接続する必要があるバックエンド 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」間隔と呼ばれるものを設定する必要があるかもしれないと聞いたので、ソケットは接続をより長く開いたままにしておく必要がありますが、それを設定する場所がわかりません。