2013-10-10 75 views
0

我發送帶有異步請求的NSURLConnection,以便我可以取回一個cookie,然後對該cookie執行一些操作。在NewRelic上,服務器說它正在處理1秒以內的請求。但是當我在iOS端做時間標記時,我發現它需要5-10秒才能到達completionHandler ......有沒有人遇到過這個問題?我已將所有其他網絡帶寬使用減少爲無,並且仍然存在此問題。對其他端點的其他請求似乎相當快。NSURLConnection異步調用在其響應中被延遲

所以NewRelic報告似乎報告的時間戳範圍只有400ms的請求......但就像我說我看到它在5000ms到10000ms。

想法?這是我的代碼。

[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]; 
    } 

}]; 

回答

0

我可以說現在是New Relic的報告請求時間跨度HTTP請求往返時間,並且不包括在完成處理程序所做的任何工作。你認爲New Relic是否會造成這種延誤,或者應該報告更長的時間?

+0

所以是的,我發現有一個重定向正在爲我提供一個大網站的後續字。解決方案是處理重定向並從那時起更新我的用戶界面,而不是等待長時間的重定向... – theprojectabot