0

現在、一部のサーバー API 呼び出しで http から https に切り替えようとしていますが、自分で説明できない問題が発生しています。

http から https に切り替えた直後に、サーバーが既に要求を処理しているにもかかわらず、非同期要求が完了するまでに 60 秒かかります。

エラーがスローされたり、タイムアウトが発生したりすることはありません。リクエストが終了したことを通知するのに 60 秒かかるようです。そして、60 秒後に、本来の目的を果たします。

これは私がやっていることです:

NSString *theBody = @"param1=value1&param2=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 を使用して同じ要求を簡単なテスト実行として試してみたところ、正しく機能しました。

ここで何が起こっているのか知っている人はいますか?

前もって感謝します

アルネ

4

1 に答える 1

0

実際にはサーバーの問題のようです。設定で直りました

keepalive_timeout 0

私のnginxの設定ファイルで。

于 2012-04-17T16:33:19.403 に答える