Я пишу приложение для iPhone, которое будет вызывать метод веб-сервиса с использованием формата мыльного сообщения.Мне нужен синхронный процесс, потому что табличное представление нуждается в этих данных, прежде чем они могут быть отображены.Поэтому я использую [NSURLConnection sendSynchronousRequest: returningResponse: error:]
Проблема в том, что вся программа завершит работу без сообщения об ошибке после вызова метода.Даже после того, как я поместил оператор NSLog сразу после [NSURLConnection sendSynchronousRequest: returningResponse: error:], никаких выходных данных нет, поэтому я уверен, что программа завершается во время вызова этого метода.На самом деле во время этого HTTP-запроса и ответа.
Однако, если я установил точку останова до вызова этого метода и запустил программу в режиме отладки, все работает нормально, программа не завершится, и я получу свои результатыа также.
Кто-нибудь может понять, что происходит?Спасибо.
- (void) sendSyncHTTPRequest:(NSString *)request_data operation:(ServOperationSync *)serv_ops {
id<ServiceData> serv_data = serv_ops.dataDelegate;
NSURL *urlAddr = [NSURL URLWithString:[serv_data getServURL]];
urlRequest = [NSMutableURLRequest requestWithURL:urlAddr
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:90];
NSData *requestData = [request_data dataUsingEncoding:NSUTF8StringEncoding];
[urlRequest setValue:@"MobilePortal" forHTTPHeaderField:@"User-Agent"];
[urlRequest setValue:[serv_data getSoapAction] forHTTPHeaderField:@"SOAPAction"];
[urlRequest setValue:[NSString stringWithFormat:@"%u", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[urlRequest setValue:urlAddr.host forHTTPHeaderField:@"Host"];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:requestData];
NSLog(@"just before sending http request");
[serv_ops.responseData setData:[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&urlError]];
NSLog(@"after sending http request");
}
Обратите внимание, что urlResponse и urlError объявлены как переменные экземпляра.