При вызове веб-сервиса .net SOAP1.1 от андроида с помощью ksoap2 lib я встретил проблему кастинга ответа на пользовательский объект. Например, код ниже называют корректным после httpTransport.call (soapAction, soapEnvelope); и имейте данные внутри. Но я, cant't бросают его к конкретному объекту ни один в SoapObject или Вектор, поскольку я видел в нескольких примерах, я получаю CastException или простой ничто. Если кто-то знает, как иметь дело с ним, помогите.
public StatusSetting[] GetAllStatuses(String installation){
StatusSetting[] statuses = null;
String methodName = "GetAllStatuses";
String soapAction = NAMESPACE + "/" + methodName;
SoapObject request = new SoapObject(NAMESPACE, methodName);
request.addProperty("installation", installation);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(request);
AndroidHttpTransport httpTransport = new AndroidHttpTransport(SERVICE_URL);
try {
httpTransport.call(soapAction, soapEnvelope);
statuses = (StatusSetting[])soapEnvelope.getResponse();
} catch (Exception e) {
e.printStackTrace();
}
return statuses;
}
Сначала попробуйте и посмотрите, получаете ли вы какой-либо ответ.
Object obj = envelope.bodyIn;
, если этот объект
не равен нулю, попробуйте следующее.
SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
Думаю, это должно сработать, если вы получите какой-то ответ.
Вам необходимо указать kSOAP, что такое объект StatusSetting
и , как
преобразовать ответ SOAP в объект StatusSetting
.