开发者

Android, Ksoap, webService

开发者 https://www.devze.com 2023-03-27 01:22 出处:网络
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 t

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 开发者_StackOverflow社区= "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..


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


Do it like this:

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

    }

If your Uri variables are correct this should do the trick.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号