NSURLConnection异步调用因响应而延迟

时间:2013-10-10 23:36:27

标签: cookies login nsurlconnection latency newrelic

我发送一个带有异步请求的NSURLConnection,以便我可以取回一个cookie,然后用该cookie做一些事情。在NewRelic上,服务器说它正在1秒内处理请求。但是当我在iOS端进行时间戳时,我发现需要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];
    }

}];

1 个答案:

答案 0 :(得分:0)

我现在可以说的是,New Relic报告的请求时间跨度是HTTP请求往返时间,并不包括在完成处理程序中完成的任何工作。您是否认为New Relic导致此延迟或应报告较长时间?