Wywołanie usługi internetowej .net SOAP1.1 z androida przy użyciu biblioteki ksoap2 Wykryłem problem z rzutowaniem odpowiedzi na niestandardowy obiekt. Na przykład poniższy kod nazywa się poprawnie po httpTransport.call (soapAction, soapEnvelope); i mieć dane w środku. Ale nie mogę rzucić go do konkretnego obiektu ani do SoapObject ani Vector, jak widziałem w kilku przykładach, dostaję CastException lub nic prostego. Jeśli ktoś wie, jak sobie z tym poradzić, pomóż.odlewanie ksoap2 getResponse()
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;
}
Dzięki, to działa, mam dane w SoapObject. Czy mógłbyś podać kierunek przetwarzania SoapObject? Mam na myśli odczytywanie właściwości i szukanie danych, których potrzebuję. Próbowałem uzyskać resultRequestSOAP.properties działa (robi się json danych) w trybie debugowania, ale właściwości nie jest otwarta metoda do użycia w kodzie. – Maxim
Znam dwa sposoby analizowania SoapObject. 1. Wdrożyć interfejs 'org.ksoap2.serialization.Marshal' i zarejestrować odpowiedni znacznik SOAP. 2. Innym sposobem jest użycie - metody 'getProperty()' i 'getAttribute()' obiektu SoapObject w celu uzyskania odpowiednich wartości. HTH. –
Spójrz na to. http://www.drdobbs.com/article/printableArticle.jhtml;jsessionid=OKCYS4LV2OQDPQE1GHPCKHWATMY32JVN?articleId=208800166&dept_url=/mobility/ –