Android、Ksoap、Web服务

Android、Ksoap、Web服务,android,web-services,mobile,ksoap2,ksoap,Android,Web Services,Mobile,Ksoap2,Ksoap,帮帮我,我在网上搜索了大约3个星期,但无法让它工作 我有一个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

帮帮我,我在网上搜索了大约3个星期,但无法让它工作

我有一个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
我有SOAP用户界面,我可以调用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>

8.
31345
4.
我尝试了不同的Ksoap库、不同的名称空间、方法名称。不同的SoapEnvelope.VER。我记不起我测试过的所有东西。我绝望了

非常感谢..

像这样做:

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变量是正确的,这应该可以做到。

您必须为每个属性提供名称空间。尝试重载版本的
addProperty
,并为每个属性设置同时包含
name
namespace
PropertyInfo

比如:

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

谢谢你,伙计!成功了!Eclipse说:“方法addProperty(PropertyInfo,Object)已被弃用”,还有其他方法吗?可能只将一个PropertyInfo与命名空间放在一起?你帮了我这么多!我支持Jr提出的问题。如果有其他方法,请告诉usHi@Jannik!根据您的提示,我可以使用响应中设置的uri,因此这对我帮助很大,但它将名称空间放错了,请参见。。08-10 09:14:12.488:INFO/System.out(362):SoapFault-faultcode:'env:Server'faultstring:'javax.xml.bind.unmarshaleException:意外元素(uri:,local:'Apgame')。预期的元素是,…'faultactor:'null'详细信息:null您知道要更正此错误吗?谢谢如果我更改名称空间x soap_操作,我会得到。08-10 09:15:33.488:INFO/System.out(392):SoapFault-faultcode:'env:Client'faultstring:'Endpoint{}GetPriceWSPortType不包含以下操作元数据:{}GetPrice'faultactor:'null'详细信息:null
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");
...