現在、一部のサーバー 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 を使用して同じ要求を簡単なテスト実行として試してみたところ、正しく機能しました。
ここで何が起こっているのか知っている人はいますか?
前もって感謝します
アルネ