2015-03-04 2 views
0

ksoap2 генерирует XML, как этотksoap2 андроида 1c структура отличается XML

<?xml 
    version="1.0" 
    encoding="UTF-8" 
    ?> 
<env:Envelope> 
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    <env:Body> 
     <tns:GetListClient> 
      xmlns:tns="http://www.spr.org" 
      hello 
      </tns:GetListClient> 
     </env:Body> 
    </env:Envelope> 

Но веб-службы 1c, excepts только такие XML-структурированным файлы

<soap:Envelope> 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
     <soap:Header/> 
     <soap:Body> 
      <m:GetListClient> 
       xmlns:m="http://www.spr.org" 
       <m:Param/> 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       </m:GetListClient> 
      </soap:Body> 
     </soap:Envelope> 

, как вы видите, разница в этом Params

xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

Android код

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
request.addProperty("Celsius", "23"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.implicitTypes = true; 

     envelope.setOutputSoapObject(request); 
     Log.e("request", request.toString()); 

     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     androidHttpTransport.debug = true; 

     try { 
      androidHttpTransport.call(SOAP_ACTION, envelope,headerProperty); 
      SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
      resultString = response.toString(); 
      Log.e("requestDumpCelsius",androidHttpTransport.requestDump); 
      Log.e("responseDumpCelsius",androidHttpTransport.responseDump); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      resultString = null; 
     } 
     if(resultString!=null) 
     return resultString; 
} 

это дает мне такое исключение

03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ SoapFault - faultcode: 'soap:Client' faultstring: 'Ошибка разбора SOAP сообщения: неизвестный параметр. ' faultactor: 'null' detail: [email protected] 
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137) 
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140) 
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.transport.Transport.parseResponse(Transport.java:129) 

Что мне нужно, чтобы изменить структуру XML-файла но PropertyInfo позволяет мне добавить только одно пространство имен

Проблема решена Похоже, я использовали неправильные свойства

+0

Что такое headerProperty? SoapObjectCustom, показать их? также используйте request.addProperty («Цельсия», «23»); not (SoapObject soapObject = request.addProperty ("Celsius", "23");) – IshRoid

+0

i изменен мой код, извините –

+0

Какой NAMESPACE вы используете? также попробуйте удалить envelope.implicitTypes = true; – IshRoid

ответ

1

Как я понял ваш код, это может быть NAMESPACE Задача

Попробуйте использовать

private static String NAMESPACE = "http://tempuri.org/"; 

Если выше не работает, то

private static String NAMESPACE = "xmlns:m="http://www.spr.org""; 

Если выше и не работает для вас, то пожалуйста, напишите WSDL

+0

извините, я внимательно просмотрел файл wsdl и понял, что мне нужно использовать другие свойства, и он, наконец, работал) спасибо за попытку помочь –

Смежные вопросы