Android、Ksoap、Web服务
帮帮我,我在网上搜索了大约3个星期,但无法让它工作 我有一个WS,只想让我的应用程序有响应。但不幸的是,我纠正了所有的错误后,总是出现以下错误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
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");
...