Я добавил пример реализации SOAP в iOS в своем блоге Wordpress. Надеюсь, это вам поможет https://wordpress.com/post/bharathreddys.wordpress.com/6
Предположим, что URL-адрес источника .wsdl - это исходный URL-адрес.
http://www.webservicex.net/geoipservice.asmx?WSDL
Создайте SOAP Envelop и заголовок SOAP.
NSMutableString * soapHeader = @"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\""
" xmlns:hom=\"http://www.webservicex.net/">"
"<soapenv:Header/>";
быть помните, что «XMLNS: рупор», текст рядом с «:» это слово, которое будет использоваться в качестве ссылки TargetNamespace для вызова службы, которые будут добавлены в SOAP теле.
SOAP тело будет выглядеть следующим образом:
[soapHeader appendString:@"<soapenv:Body>"];
[soapHeader appendString:@"<hom:GetGeoIP>"]; // add the body parameters
[soapHeader appendString:@"<hom:IPAddress>0.0.0.1</hom:IPAddress>"];
[soapHeader appendString:@"</hom:GetGeoIP>"];
[soapHeader appendString:@"</soapenv:Body>"];
[soapHeader appendString:@"</soapenv:envelope>"];
Теперь веб-службы выглядит следующим образом:
NSMutableString * requestStr = [NSMutableStringstring];
[requestStr appendString:soapHeader];
NSString * urlStr = @"http://www.webservicex.net/geoipservice.asmx?WSDL";
NSURL * url = [NSURL URLWithString:urlStr];
NSMutableURLRequest * request = [[NSMutableURLRequestalloc] initWithURL:url];
[request setValue:@"http://www.webservicex.net/GetGeoIP" forHTTPHeaderField:@"SOAPAction"];
[request setValue:@"http://www.webservicex.net/" forHTTPHeaderField:@"targetNamespace"];
[request setValue:@"text/xml;charset=UTF-8"forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestBody];
[request setHTTPMethod:@"POST"];
[request setValue:[NSStringstringWithFormat:@"%d",[requestBody length]] forHTTPHeaderField:@"Content-Length"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
BOOL isSuccess = YES;
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSLog(@"received data---%@",response);
if(connectionError != nil) {
isSuccess = NO;
NSLog(@"connection error with code %d",connectionError.code);
}
NSDictionary * responseDictionary = [NSDictionary dictionary];
if([httpResponse statusCode] == 200) {
isSuccess = YES;
//Do something with the received dictionary.
}];
Это базовая платформа, как мы можем сделать простой SOAP на основе вызовов веб-служб в IOS.
Счастливое кодирование !!!!
У меня нет учетной записи wordpress, вы можете вставить здесь ответ? –
проверить мой обновленный ответ выше. –