2014-11-10 3 views
0

Я пытаюсь разработать приложение, которое использует данные из службы SOAP. это первый раз, когда я использую SOAP-сервис. Прочитав несколько руководств, я подумал, что смогу правильно установить запрос на службу, но всегда получаю ошибки в ответе. Что не так ?!SOAP в приложении iOS

это код для запроса

NSString *soapMessage = [NSString stringWithFormat: 
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://microsoft.com/webservices/\">\n" 
"<SOAP-ENV:Body>\n" 
"<ns1:ListaComuni>\n" 
"<Nazione>italia</Nazione>\n" 
"</ns1:ListaComuni>\n" 
"</SOAP-ENV:Body>\n" 
"</SOAP-ENV:Envelope>\n" 
]; 

NSURL *url = [NSURL URLWithString:@"http://www.xxxxx.xxx/XXXXX.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: msgLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

Когда я получаю ответ

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
NSLog(@"DONE. Received Bytes: %d", [webData length]); 
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 
NSLog(@"RISPOSTA %@",theXML); 
} 

Журнал:

RISPOSTA <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ListaComuniResponse xmlns="http://microsoft.com/webservices/"><ListaComuniResult><anyType xsi:type="xsd:string">Object reference not set to an instance of an object.</anyType></ListaComuniResult></ListaComuniResponse></soap:Body></soap:Envelope> 

Я тестировал запрос XML на http://wsdlbrowser.com и все работает. Что случилось?! Благодаря

ответ

0

Ok ... я нашел ошибку ... правильный запрос:

NSString *soapMessage = [NSString stringWithFormat: 
         @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
         "<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/\">" 
         "<soap:Body>" 
         "<ListaComuni xmlns=\"http://microsoft.com/webservices/\">" 
         "<Nazione>%@</Nazione>\n" 
         "</ListaComuni>" 
         "</soap:Body>" 
         "</soap:Envelope>", nameInput.text 
]; 
Смежные вопросы