0

非同期リクエストで 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];
    }

}];
4

1 に答える 1