2014-02-24 3 views
1

Я пытаюсь потреблять SOAP WebServices в Android и писать собственный код для этого: Ниже мой кодAndroid Unmarshalling Error: неожиданный элемент (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" /> 

Я подтвердил имяМетод, пространство имен, URL, который я дал правильно. Если кто-то получает то, что я делаю неправильно. Пожалуйста, предложите.

Спасибо, Android разработчика

ответ

0

изменить ваш запрос на следующее:

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

при отправке XML Копание SOAP вы должны включить

<![CDATA[ 
    <your xml items> 
    </your xml items> 
]]> 
Смежные вопросы