2013-06-21 4 views
0

Мне нужно разобрать запрос на мыло, но у меня есть следующая проблема. Может кто-то поможет мне решить эту проблему, поскольку я новичок в soap .let мне знать, если вам нужна какая-либо другая информация о кодеПроблема с мыльным парсером

Вот мыло Запрос

POST /LocatorAPI/LocatorService.asmx HTTP/1.1 
Host: staging2.abc.spatialpoint.com 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "http://spatialpoint.com/abc/locator/FindNearby" 

<?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> 
<FindNearby xmlns="http://spatialpoint.com/abc/locator/"> 
    <request>   <Token>string</Token> 
    </request> 
</FindNearby> 
</soap:Body> 
</soap:Envelope> 

вот моя цель с Кодексом.

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>", 
@"<FindByProperty xmlns=\"http://spatialpoint.com/abc/locator/ \">", 
@"<request>", 
@"<Token>", 
theRadius, 
@"</Token>", 
@"</request>", 
@"</FindByProperty>", 
@"</soap:Body>", 
@"</soap:Envelope>"]; 




NSURL *url = [NSURL URLWithString:@"http://staging2.abc.spatialpoint.com/LocatorAPI/LocatorService.asmx"]; 
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; 

// HTTP headers 
NSString *messageLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[req addValue:messageLength forHTTPHeaderField:@"Content-Length"]; 
// method = POST 
[req setHTTPMethod:@"POST"]; 

// BODY 
[req setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

// send request 
self.connection = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
if (self.connection != nil) 
{ 
    self.receivedData = [NSMutableData data]; 
} 
else 
{ 
    [[UIApplication sharedApplication]  
    setNetworkActivityIndicatorVisible:NO]; 
} 

и я получаю эту ошибку.

2013-06-19 02:22:49.942 SoapClient[42229:c07] Response: 
2013-06-19 02:22:49.943 SoapClient[42229:c07] <?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><soap:Fault> 

<faultcode>soap:Client</faultcode><faultstring>Server did not recognize the value of HTTP 

Header SOAPAction: .</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope> 

ответ

0

Try добавление HTTP поля SOAPAction на запрос:

[req setValue:@"http://spatialpoint.com/abc/locator/FindNearby" forHTTPHeaderField:@"SOAPAction"]; 

Также рассмотрим проверить this project.

0

Я хотел бы поставить это в комментарии, но он слишком велик. Вот мое мыло код запроса:

soapMsg = 
    [NSString stringWithFormat: 
    @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
    "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" 
    "<soap12:Body>" 
    "<WebServiceMethod xmlns=\"http://tempuri.org/\">" 
    "<MessageToServer><![CDATA[%@]]></MessageToServer>" 
    "</WebServiceMethod>" 
    "</soap12:Body>" 
    "</soap12:Envelope>" 
    ,encryptedString]; 

Где encryptedString это сообщение мой сервер принимает и расшифровывает. WebServiceMethod - это имя метода в моих веб-сервисах, а MessageToServer - это имя объекта, который запрашивает веб-служба.

Я также использую ASIFormDataRequest вместо NSMutableURLRequest. Это может иметь значение. Мне очень понравилась библиотека ASIHTTP.

Еще один бит. Мой контент-тип @"application/soap+xml; charset=utf-8" Честно говоря, я не знаю, что это должно быть, вы можете узнать больше, чем я в этом отношении. Просто подумал, что могу упомянуть об этом, так как кажется, что ваш заголовок, что сервер не понимает.

+0

Я не могу использовать ASIHTTP больше не поддерживается. – Anil

+0

Почему вы дважды задаете длину сообщения? И проверьте мое редактирование для другого бита, который может вам помочь, может и нет. – Putz1103

+0

длина сообщения дважды - опечатка, только что обновленный код. – Anil