Android, Ksoap, веб-сервис - PullRequest
       12

Android, Ksoap, веб-сервис

4 голосов
/ 10 августа 2011

помогите мне, я нахожусь на этом около 3 недель, ища весь www и не могу заставить его работать!

У меня есть WS и я просто хочу, чтобы мое приложение получило ответ.но я, к сожалению, все исправлю всегда получаю следующую ошибку!

08-09 15:29:30.930: INFO/System.out(1800): That is the bodyin envelope:  SoapFault - Faultcode: 'env:Server' 
 faultstring: 'javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Apgame"). 
 Expected elements are 
 <{http://master.system.com.br/}Apgame>,
 <{http://master.system.com.br/}numberSerie>,
 <{http://master.system.com.br/}idPost>,
 faultactor: 'null' detail: null

Мое приложение использует это.вызывает WS без особых проблем.

<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:tran="http://master.system.com.br/"
xmlns:ws="http://system.com.br/">
   <soapenv:Body>
      <ws:GetPrice>
         <tran:Apgame>8</tran:Apgame>
         <tran:numberSerie>31345</tran:numberSerie>
         <tran:idPost>4</tran:idPost>
      </ws:GetPrice>
   </soapenv:Body>
</soapenv:Envelope>

Я пробовал разные библиотеки Ksoap, разные пространства имен, имя_метода.Разное SoapEnvelope.VER.Я не могу вспомнить все, что я проверял.Я в отчаянии.

Спасибо большое ..

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Вы должны предоставить пространство имен для каждого свойства.Попробуйте перегруженную версию addProperty и установите PropertyInfo, содержащую name и namespace для каждого свойства.

Что-то вроде:

String TRAN_NAMESPACE = "http://master.system.com.br/";
...

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo apGame = new PropertyInfo();
apGame.name = "Apgame";
apGame.namespace = TRAN_NAMESPACE;
request.addProperty(apGame, "8");
...
0 голосов
/ 10 августа 2011

Сделайте это так:

String SOAP_ACTION = "http://master.system.com.br/";
    String NAMESPACE =   "http://system.com.br/";
    String METHOD_NAME = "GetPrice";
    String URL = "http://12.12.12.111/MasterWS/GetPrice?WSDL";

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("Apgame", "8");
    request.addProperty("numberSerie", "31345");
    request.addProperty("idPost", "4");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);
    try 
    {            

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.call(SOAP_ACTION, envelope);

    SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
    }
    catch (Exception e) 
    {

    }

Если ваши переменные Uri верны, это должно сработать.

...