ksoap2 android 1c отличается структурой xml

ksoap2 создает 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>

Но веб-сервис 1с, исключает только такие 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>

как видите, разница в этих параметрах

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: org.kxml2.kdom.Node@41bf3470
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 позволяет мне добавить только одно пространство имен

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

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам