KSOAP Android - ADBException: неожиданный субэлемент - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь внедрить общедоступный веб-сервис http://www.thomas -bayer.com / axis2 / services / BLZService? Wsdl для целей тестирования в Android.Однако я получаю следующее исключение при выполнении метода вызова для объекта HttpTransportSE.

org.apache.axis2.databinding.ADBException: Unexpected subelement getBank

Ниже приведен мой код, который пытается получить доступ к методу getBank, предоставляемому веб-сервисом.Я пытаюсь передать параметр "blz" со значением "10010010", по которому я ожидаю строку, содержащую некоторую информацию о связанном банке.

public class MyWebserviceFetchingIntentService extends IntentService {

public MyWebserviceFetchingIntentService() {
    super("MyWebserviceFetchingIntentService");
}

public static final String RESPONSE_MESSAGE = "response";

private static final String SOAP_ACTION = "http://www.thomas-bayer.com/blz/getBank";
private static final String METHOD_NAME = "getBank";
private static final String NAMESPACE = "http://www.thomas-bayer.com/blz/";
private static final String URL = "http://www.thomas-bayer.com/axis2/services/BLZService";


@Override
protected void onHandleIntent(Intent intent) {

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("blz", "10010010");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.debug = true;

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        Log.d("dump Request: " ,androidHttpTransport.requestDump);
        SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();

        Log.d("SOAP: ",resultsRequestSOAP.toString());

    } catch (Exception e) {
        Log.e("SOAP Exception","Error:", e);
    }

Поскольку я предполагаю, что публичный веб-сервис в порядке, он должен бытькак я создаю свой запрос.Возможно, что-то не так с моими последними строками, использованными для построения запроса, но я не смог найти работающего решения.Еще я попробовал сбросить сгенерированный запрос (как вы можете видеть из кода выше).Это дамп-запрос, который приводит к указанной выше ошибке:

<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>
        <n0:getBank id="o0" c:root="1" xmlns:n0="http://www.thomas-bayer.com/blz/">
            <blz i:type="d:string">10010010</blz>
        </n0:getBank>
    </v:Body>
</v:Envelope>

Я попытался сравнить ее с рабочим запросом, сгенерированным SOAP-UI.Вот рабочий запрос от SOAP-UI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:blz="http://thomas-bayer.com/blz/">
    <soapenv:Header/>
    <soapenv:Body>
        <blz:getBank>
            <blz:blz>10010010</blz:blz>
        </blz:getBank>
    </soapenv:Body>
</soapenv:Envelope>

Я заметил, что мои теги немного отключены, но я не знаю, как это исправить.Что не так с моим кодом?

...