NSURLConnection sendSynchronousRequest занимает слишком много времени, чтобы ответить - PullRequest
0 голосов
/ 23 декабря 2010

Я пытаюсь получить доступ к данным из веб-сервисов, созданных для проекта, над которым я работаю. Я создаю строку для создания запроса

 NSMutableString *sRequest = [[NSMutableString alloc] init];
 [sRequest appendString:@"<soapenv:Envelope xmlns:soapenv=\"http:blah blah blah /messages\">"];
 [sRequest appendString:@"<soapenv:Header/>"];
 [sRequest appendString:@"<soapenv:Body>"];
 [sRequest appendString:@"<mes:processActionRequest>"];
 [sRequest appendString:@"<ProcessAction>"];
 [sRequest appendString:@"</mes:processActionRequest>"];
 [sRequest appendString:@"</soapenv:Body>"];
 [sRequest appendString:@"</soapenv:Envelope>"];

Затем я создаю URL и запрашиваю

 NSURL *ServiceURL = [NSURL URLWithString:[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"webservices" ofType:@"plist"]] valueForKey:@"EndPointURL"]];



 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:ServiceURL];

 [request addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];



 [request setHTTPMethod:@"POST"];
 [request setHTTPBody:[sRequest dataUsingEncoding:NSUTF8StringEncoding]];

 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

 NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];

 NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];

 NSTimeInterval duration = [NSDate timeIntervalSinceReferenceDate] - start;
 NSLog(@"Response Time%.4f",duration);

 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;


 return responseData; 

Проблема в том, что время отклика, которое я печатал в журнале, всегда как-то превышает 20 секунд. Но когда я нажимаю на ту же ссылку с помощью проекта eviware / SoapUI, она выполняется в течение секунды, также, когда та же ссылка используется в проекте blackberry, она работает гладко. Я не понимаю, где я иду не так. Почему ответ очень медленный только для iPhone. Пожалуйста помоги. Если я не говорю ясно, пожалуйста, дайте мне знать. Я постараюсь уточнить подробнее.

Ответы [ 2 ]

3 голосов
/ 07 января 2011

В конце URL появился символ новой строки, который вызывал проблему. Спасибо за поддержку Андрей.

1 голос
/ 23 декабря 2010

Если вы уже не запускаете код из фонового потока, вам лучше использовать асинхронные вызовы по NSURLConnection.

Вы видите ту же проблему с асинхронным API?

...