Пустой объект передан в сгенерированный WSDL-код - PullRequest
0 голосов
/ 16 января 2012

Я использую сервисы SOAP и инструмент WSDL2OBJ для генерации кода для моих веб-сервисов.Я использую следующий код для передачи параметров в сервис, но он отправляет пакет Emplty в мой сервис.

В чем проблема.

// Ниже приведен код, который я использую для отправки пакета в OBJ-C. Qula_x0020_WebServiceSoapBinding * binding = [[Qula_x0020_WebService Qula_x0020_WebServiceSoapBinding] initWithAddress: @ "URL"];binding.logXMLInOut = YES;// Qula_x0020_WebService_ws_LoginInfo * loginInfo = []

Qula_x0020_WebService_Login *parms = [[Qula_x0020_WebService_Login alloc] init];

[[parms LoginInfo] setEMAIL:@"username"];
[[parms LoginInfo] setPASSWORD:@"pasword"];
[[parms DeviceInfo] setMODEL:@"model"];
[[parms DeviceInfo] setDEVICE_TIME:@"time"];

[binding LoginAsyncUsingParameters:parms delegate:self];

Теперь вот XML моего WEBService:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:qula="url/">
   <soap:Header/>
      <soap:Body>
         <qula:Login>
            <qula:LoginInfo>
                <qula:EMAIL>?</qula:EMAIL>
                <qula:PASSWORD>?</qula:PASSWORD>
             </qula:LoginInfo>
             <qula:DeviceInfo>
                 <qula:MODEL>?</qula:MODEL>
                 <qula:DEVICE_TIME>?</qula:DEVICE_TIME>
             </qula:DeviceInfo>
          </qula:Login>
         </soap:Body>
 </soap:Envelope>

Ниже приведен XML-код, сгенерированный моим запросом Obj-C:

 <?xml version="1.0"?>
 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:Qula_x0020_WebService="http://qula.sigmatec.com.pk/" xsl:version="1.0">
  <soap:Body>
       <Qula_x0020_WebService:Login/>
   </soap:Body>
  </soap:Envelope>

Может кто-нибудь помочь мне, пожалуйста.М застрял здесь.(

1 Ответ

0 голосов
/ 16 января 2012

Я покажу вам, как я имею дело с данными, когда отправлю их в мыльном сообщении. Может быть, это поможет


NSString *conduitPath = [NSString stringWithFormat:@"http://yourwebservicename",serverIP];


NSURL *url = [NSURL URLWithString:conduitPath];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];


NSString *soapmsg = [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>"
                     "<registration xmlns=\"http://tempuri.org/\">"
                     "<username>%@</username>"
                     "<password>%@</password>"
                     "<name>%@</name>"
                     "<email>%@</email>"
                     "<mobile>%@</mobile>"
                     "</registration>"
                     "</soap:Body>"
                     "</soap:Envelope>",self.userNameTxt.text,self.passwordTxt.text,self.nameTxt.text,self.emailTxt.text,self.mobileTxt.text];


NSString *msgLength = [NSString stringWithFormat:@"%d",[soapmsg length]];

[request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"http://tempuri.org/registration" forHTTPHeaderField:@"SOAPAction"];
[request addValue:msgLength forHTTPHeaderField:@"Content-Length"];


[request setHTTPMethod:@"POST"];
[request setHTTPBody:[soapmsg dataUsingEncoding:NSUTF8StringEncoding]];


conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
if(conn)
{
    webData = [[NSMutableData data]retain];

}

после этого реализуйте методы делегата NSURLConnection, чтобы убедиться, что вашсоединение успешно загружено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...