Search code examples
androidweb-servicesmobileksoap2ksoap

Android, Ksoap, webService


help me, i'm on it about 3 weeks searching the entire www and cant make it work!

I have a WS and just want to make my app have the response. but I after correct everything unfortunately always get the folowing error!

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

My app is using this.

private void getSOAPRequest() {
        //no matter what I put here in SOAP_ACTION it makes no difference
        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.setOutputSoapObject(request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        try { androidHttpTransport.call(SOAP_ACTION, envelope);
        } catch (IOException e) {
        e.printStackTrace();
        } catch (XmlPullParserException e) {
        e.printStackTrace();}
        System.out.println("That is the bodyin envelope: "+ envelope.bodyIn);
}

I have SOAP UI and I can makes calls to WS with really no problems with.

<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>

I have tried diferent Ksoap libraries, diferent Namespaces, method_name. Diferent SoapEnvelope.VER . I can't remember everything I have tested. I'm desperate.

Thank you so much..


Solution

  • You must provide namespace for each property. Try the overloaded version of addProperty and set up PropertyInfo containing both name and namespace for each property.

    Something like:

    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");
    ...