非同期リクエストで NSURLConnection を送信して、Cookie を取得し、その Cookie で何かを実行できるようにしています。NewRelic では、サーバーは 1 秒未満でリクエストを処理していると言っています。しかし、iOS 側でタイム スタンプを実行すると、completionHandler に到達するのに 5 ~ 10 秒かかることがわかります。これに遭遇した人はいますか? 他のすべてのネットワーク帯域幅の使用をゼロに減らしましたが、まだこの問題が発生しています。他のエンドポイントへの他のリクエストは非常に高速に見えます。
そのため、NewRelic レポートでは、そのタイム スタンプ スパンでのリクエストはわずか 400 ミリ秒であると報告されているようですが、私が言ったように、5000 ミリ秒から 10000 ミリ秒でそれを見ています。
考え?これが私のコードです。
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if(response)
{
// code to handle with the response
NSLog(@"timestamp after -success: %@",[NSDate date]);
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if ([httpResponse respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary *fields = [(NSHTTPURLResponse *)response allHeaderFields];
// NSString *cookie = [fields valueForKey:@"Set-Cookie"]; // It is your cookie
NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[httpResponse allHeaderFields] forURL:[NSURL URLWithString:[theUrlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]];
DLog(@"%d", all.count);
for (NSHTTPCookie *cookie in all) {
DLog(@"Name: %@ : Value: %@", cookie.name, cookie.value);
}
[[WDDataController sharedInstance] resumeOperations];
[[NSNotificationCenter defaultCenter] postNotificationName:SERVICE_AUTHENTICATED object:nil];
}
}
if (error){
NSLog(@"timestamp after error: %@",[NSDate date]);
// code to handle with the error
NSLog(@"Error: &@",error);
[[WDDataController sharedInstance] resumeOperations];
}
}];