2016-01-19 7 views
0

Я хотел вызвать службы SOAP, увидел много ссылок на документы. Я использовал один из таких, как BestSoaptool от github https://github.com/yillars/BestSoapToolwithafnet, но мне все еще не хватает места и не могу получить ответ.SOAP-сервисы iOS

Я использую ссылку как «https://aaa.com/Customers.svc?singleWsdl», а затем имя метода «xxx», но я не получаю ответа.

Если нет, это может помочь мне лучше понять, как мне это реализовать?

Спасибо.

ответ

0

Я добавил пример реализации 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.

Счастливое кодирование !!!!

+0

У меня нет учетной записи wordpress, вы можете вставить здесь ответ? –

+0

проверить мой обновленный ответ выше. –

Смежные вопросы