Я пытаюсь внедрить общедоступный веб-сервис 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>
Я заметил, что мои теги немного отключены, но я не знаю, как это исправить.Что не так с моим кодом?