Ошибка сообщения SOAP с дополнительными тегами XML - PullRequest
0 голосов
/ 12 апреля 2011
NSString *urlString = @"http://172.29.165.219:8090/abc/services/Abc";
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"
                         "<getUserInfo>\n"
                         "<email>%@</email>\n"
                         "<pwd>%@</pwd>\n"
                         "</getUserInfo>\n"
                         "</soap:Body>\n"
                         "</soap:Envelope>\n", @"babla.sharan@tcs.com",@"UGFzc0AxMjM="//,@"50006F0063006B0065007400500043000000-444556494345454D00",@"PocketPC"
                         ];
NSMutableURLRequest *loginRequest = [RequestGenerator -generateSOAPRequestWithURLString:urlString soapMessage:soapMessage contentType:@"text/xml; charset=utf-8" action:@"getUserInfo"];
WebServiceHandler *connection = [[WebServiceHandler alloc]init];

Для кода выше, он работает нормально, но когда я добавляю дополнительный тег в качестве родительского тега к идентификатору и паролю

NSString *urlString = @"http://172.29.165.219:8090/abc/services/Abc";
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"
                         "<getUserInfo>\n"
                         **"<ABC>\n"**
                                                     "<email>%@</email>\n"
                         "<pwd>%@</pwd>\n"
                                                     **"</ABC>\n"**
                         "</getUserInfo>\n"
                         "</soap:Body>\n"
                         "</soap:Envelope>\n", @"babla.sharan@tcs.com",@"UGFzc0AxMjM="//,@"50006F0063006B0065007400500043000000-444556494345454D00",@"PocketPC"
                         ];
NSMutableURLRequest *loginRequest = [RequestGenerator generateSOAPRequestWithURLString:urlString soapMessage:soapMessage contentType:@"text/xml; charset=utf-8" action:@"getUserInfo"];
WebServiceHandler *connection = [[WebServiceHandler alloc]init];

Он показывает исключение и получает эту ошибку:

org.xml.sax.SAXException: SimpleDeserializer обнаружил дочерний элемент, который НЕ ожидается, в чем-то, что он пытался десериализовать.

Он даже не позволяет мне попасть на сервер.

1 Ответ

0 голосов
/ 12 апреля 2011

Здесь, во втором мыльном сообщении, вы отправляете дополнительный родительский тег для вашей информации, которая может не распознаваться вашим сервером. Если этот тег является необязательным, тогда не должно быть никаких проблем, но если он нежелателен, вы не должны его использовать. Ниже приведены выдержки из W3.org (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/) ...., в которых рассказывается о получении и обработке запроса на мыло.

A SOAP application receiving a SOAP message MUST process that message by performing 
    the following actions in the order listed below:

         1. Identify all parts of the SOAP message intended for that application 
         2. Verify that all mandatory parts identified in step 1 are supported by
 the  application for this message (see section 4.2.3) and process them accordingly.
 If this is   not the case then discard the message .
 The processor MAY ignore optional parts identified in step 1 without affecting the outcome of the processing.
        3. If the SOAP application is not the ultimate destination of the message then
     remove all parts identified in step 1 before forwarding the message.


  Processing a message or a part of a message requires that the SOAP processor 
  understands, among other things, the exchange pattern being used (one way, 
  request/response, multicast, etc.), the role of the recipient in that pattern, the 
  employment (if any) of RPC mechanisms such as the one documented in section 7, the 
  representation or encoding of data, as well as other semantics necessary for correct 
  processing
...