#objective-c #web-services
#objective-c #веб-службы
Вопрос:
У меня есть приведенный ниже скрипт для подключения моей веб-службы Microsoft для вставки какой-либо записи в базу данных, каждый день утром, когда я возвращаюсь в офис, в первый раз, когда я запускаю приведенный ниже скрипт, он не работает нормально, похоже, что веб-служба не отвечает, но соединение в порядке, но когда я запускаю веб-службу.повторите сценарий во второй раз, результат в порядке. (найдена некоторая запись, вставленная в базу данных)
Похоже, что веб-служба спала ночью, когда я запускаю скрипт в первый раз, просто разбудите веб-службу, когда я запускаю скрипт во второй раз, тогда веб-служба работает нормально.
У кого-нибудь есть представление об этой ситуации? Спасибо.
NSString *soapMessage = [NSString stringWithFormat:@"<?xml version="1.0" encoding="utf-8"?>n"
"<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance>" xmlns:xsd="http://www.w3.org/2001/XMLSchema>" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/>">n"
"<soap:Body>n"
" <Ins_VIP xmlns="http://tempuri.org/>">n"
"<strVIPNo>%@</strVIPNo>n"
"</Ins_VIP>n"
"</soap:Body>n"
"</soap:Envelope>n" , strVIPNo];
NSURL *url = [NSURL URLWithString:@"http://192.168.0.1/VIPWebService/service1.asmx"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: @"http://tempuri.org/Ins_VIP" forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if( theConnection )
{
NSLog(@"No Problem");
}
else
{
NSLog(@"theConnection is NULL");
}
Комментарии:
1. Вам необходимо выполнить некоторую отладку на стороне сервера, чтобы определить, что происходит.
2. Можете ли вы отследить HTTP-вызовы и посмотреть, каков статус первого неудачного вызова? Если ему удалось связаться с сервером, это будет 200. Вы можете использовать приложение Charles для мониторинга сетевой активности.