2014-02-24 279 views
1

我试图消耗SOAP web服务在Android和这样做的编写自己的代码: 下面是我的代码Android Unmarshalling错误:意外元素(URI:“url”,local:“scope”)。预计元素< {

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
request.addSoapObject(getScopeBean()); 
request.addSoapObject(getLocaleBean()); 
request.addProperty("commercialRef","somevalidvalue"); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    SoapEnvelope.VER11); 
envelope.dotNet = true; 
String xsd = envelope.XSD; 
Log.e("envelop ", xsd); 
envelope.setOutputSoapObject(request); 
envelope.implicitTypes = true; 
envelope.setAddAdornments(false); 
HttpTransportSE http = new HttpTransportSE(URL, 2000); 
http.call(SOAP_ACTION, envelope); 
String requestDump = http.requestDump; 
Log.e("requestDump", requestDump); 

String responseDump = http.responseDump; 
Log.e("responseDump", responseDump); 

我的请求XML是

<?xml version="1.0"?> 
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:d="http://www.w3.org/2001/XMLSchema" 
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/" > 
<v:Header /><v:Body> 
<someMethodname xmlns="NAMESPACE" > 
<scope> 
<brand> 
somevalidname 
</brand> 
<country> 
WW 
</country> 
<project> 
somevalidname 
</project> 
</scope> 
<locale> 
<isoCountry> 
GB 
</isoCountry> 
<isoLanguage>en</isoLanguage> 
</locale> 
<commercialRef>somevalidname</commercialRef> 
</getProductDetailByCommercialRef> 
</v:Body> 
</v:Envelope> 

和响应

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > 
<soap:Body><soap:Fault><faultcode>soap:Client</faultcode> 
<faultstring> 
Unmarshalling Error: unexpected element 
(uri:"http://", local:"scope"). 
Expected elements are &lt;{}rangeId>,&lt;{}scope>,&lt;{}commercialRef>,&lt;{}locale> 
</faultstring> 
</soap:Fault> 
</soap:Body> 
</soap:Envelope> 

我一直在试着修复它米3天并没有成功。任何人都可以帮助修复它。我会很棒。 在soap ui中,wsdl工作正常。 在WSDL文件中的方法

<wsdl:message name="getXXXXXXXXX"> 
<wsdl:part element="tns:getProductDetailByCommercialRef" name="parameters" /> 

我已确认方法名,命名空间,网址我给了是正确的。 如果有人得到我所做的不正确的方式。请建议。

感谢, Android开发

回答

0

改变您的要求如下:

<soapenv:Envelope ... xmlns:ord="NAMESPACE"> 
... 
<ord:someMethodname> 
0

发送XML thorugh SOAP时,你必须包括

<![CDATA[ 
    <your xml items> 
    </your xml items> 
]]> 
相关问题