Mam dużo problemów ze znalezieniem dobrych informacji na temat wywoływania standardowej usługi internetowej SOAP / WSDL za pomocą Androida. Wszystko, co udało mi się znaleźć, to albo bardzo skomplikowane dokumenty i odniesienia do „kSoap2”, a potem trochę o parsowaniu tego wszystkiego ręcznie za pomocą SAX . OK, w porządku, ale jest rok 2008, więc pomyślałem, że powinna być dobra biblioteka do wywoływania standardowych usług internetowych.
Serwis internetowy to po prostu usługa stworzona w NetBeans . Chciałbym mieć wsparcie IDE do generowania klas hydraulicznych. Potrzebuję tylko najłatwiejszego / najbardziej eleganckiego sposobu skontaktowania się z usługą internetową opartą na WSDL z telefonu z systemem Android.
Odpowiedzi:
Android nie zapewnia żadnej biblioteki SOAP. Możesz napisać własny lub użyć czegoś takiego jak kSOAP 2 . Jak zauważyłeś, inni byli w stanie skompilować i używać kSOAP2 we własnych projektach, ale nie musiałem.
Do tej pory Google wykazało niewielkie zainteresowanie dodaniem biblioteki SOAP do Androida. Podejrzewam, że wolą wspierać obecne trendy w usługach sieciowych w kierunku usług opartych na REST i używać JSON jako formatu enkapsulacji danych. Lub używając XMPP do przesyłania wiadomości. Ale to tylko przypuszczenie.
Usługi sieciowe oparte na XML są w tej chwili nieco trywialnym zadaniem dla Androida. Nie znając NetBeans, nie mogę rozmawiać z dostępnymi tam narzędziami, ale zgadzam się, że powinna być dostępna lepsza biblioteka. Możliwe, że XmlPullParser uratuje cię przed użyciem SAX, ale niewiele o tym wiem.
źródło
org.apache.http.impl.client.DefaultHttpClient
domyślnie jest dołączony do zestawu SDK systemu Android. Dzięki temu uzyskasz połączenie z WSDL.źródło
To prawda, że ze względu na narzut SOAP nie jest najlepszym wyborem do wymiany danych z urządzeniami mobilnymi. Jednak możesz znaleźć się w sytuacji, w której nie kontrolujesz formatu danych wyjściowych serwera.
Jeśli więc musisz trzymać się SOAP, tutaj jest łatana biblioteka kSOAP2 dla Androida:
http://code.google.com/p/ksoap2-android/
źródło
Aby zadzwonić do usługi internetowej z urządzenia mobilnego (zwłaszcza na telefonie z Androidem), użyłem bardzo prostego sposobu, aby to zrobić. Nie użyłem żadnego interfejsu API klienta usługi sieci Web w celu wywołania usługi sieci Web. Moje podejście jest następujące, aby wykonać połączenie.
HttpURLConnection
.getResonseCode
).ErrorInput
strumień na tym samym obiekcie HTTP i otrzymaj błąd, jeśli taki istnieje.Zaimplementowałem tę procedurę dla telefonu z Androidem i działa ona poprawnie. Jestem w stanie przeanalizować odpowiedź, nawet jeśli jest ona większa niż 700 KB.
źródło
SOAP jest nieodpowiednią technologią do użytku na Androidzie (lub ogólnie urządzeniach mobilnych) z powodu wymaganego narzutu przetwarzania / parsowania. Usługi REST to rozwiązanie lżejsze i to właśnie sugerowałbym. Android jest wyposażony w parser SAX i jest dość trywialny w użyciu. Jeśli jesteś absolutnie zobowiązany do obsługi / parsowania SOAP na urządzeniu mobilnym, jest mi przykro z tego powodu, najlepszą radą, jaką mogę zaoferować, jest po prostu nie używać SOAP.
źródło
Około rok temu czytałem ten wątek, próbując dowiedzieć się, jak wykonywać połączenia SOAP na Androidzie - sugestie dotyczące tworzenia własnych przy użyciu HttpClient spowodowały, że zbudowałem własną bibliotekę SOAP dla Androida:
IceSoap
Zasadniczo pozwala budować koperty do wysłania za pomocą prostego interfejsu API języka Java, a następnie automatycznie analizuje je na obiekty zdefiniowane za pomocą XPath ... na przykład:
Staje się:
Używałem go do własnego projektu, ale pomyślałem, że może to pomóc innym osobom, więc poświęciłem trochę czasu na jego rozdzielenie i udokumentowanie. Bardzo by mi się podobało, gdyby niektóre z twoich biednych dusz, które natknęły się na ten wątek podczas przeglądania Google „SOAP Android”, mogły spróbować i uzyskać jakąś korzyść.
źródło
źródło
Miałem schadzkę z KSOAP; Wybrałem raczej prostsze podejście.
Biorąc pod uwagę plik WSDL, utwórz szablony Żądań SOAP dla każdego Żądania (na przykład: za pomocą interfejsu SOAP), a następnie zastąp wartości przekazywane w kodzie. Wyślij te dane do punktu końcowego usługi przy użyciu wystąpienia DefaultHttpClient i uzyskaj strumień odpowiedzi. Analizuj strumień odpowiedzi za pomocą analizatora składni XML Pull.
źródło
Możesz zajrzeć na WSClient ++
źródło
Utworzyłem nowego klienta SOAP dla platformy Android. Używa interfejsu wygenerowanego przez JAX-WS, ale jak dotąd jest to tylko dowód słuszności koncepcji.
Jeśli jesteś zainteresowany, wypróbuj przykład i / lub obejrzyj źródło na AndroidSOAP .
źródło
Jeśli możesz, wybierz JSON. Android jest dostarczany z kompletnym pakietem org.json
źródło
Wywołaj metody ksoap2 . Działa bardzo dobrze.
Ustaw szczegóły, takie jak
a następnie zrobić wynik
źródło
Mam nadzieję, że zadzwonienie do usługi internetowej z Androida pomoże.
źródło
Kilka miesięcy temu pracowałem z usługą internetową jax-ws w aplikacji j2ee. Tam użyliśmy CXF wsdl2java do wygenerowania kodu pośredniczącego klienta WS z pliku WSDL, a za pomocą kodów pośredniczących korzystaliśmy z usług internetowych. Kilka tygodni temu, kiedy próbowałem korzystać z usługi internetowej w taki sam sposób na platformie Android, nie mogłem, ponieważ w słoiku Androida nie ma wszystkich klas obsługujących „jax-ws”. Tym razem nie znalazłem żadnego takiego narzędzia (jeśli nie udało mi się skutecznie googleować), aby spełnić moje wymagania -
Opracowałem więc własne narzędzie do generowania klienta SOAP dla systemu Android . Gdzie musisz wykonać następujące kroki:
na przykład:
źródło
Jestem pewien, że możesz stworzyć małego klienta SOAP za pomocą Axis . Instrukcja instalacji osi .
źródło
Myślę, że Call SOAP Web Service z aplikacji na Androida bardzo ci pomoże.
źródło
Wykonaj następujące kroki metodą SOAP
Z pliku WSDL
utwórz szablony Żądań SOAP dla każdego Żądania.
Następnie zastąp wartości przekazywane w kodzie.
Wyślij te dane do punktu końcowego usługi przy użyciu instancji DefaultHttpClient.
Uzyskaj strumień odpowiedzi i wreszcie
Analizuj strumień odpowiedzi za pomocą analizatora składni XML Pull.
źródło
Jeśli możesz korzystać z JSON, jest tam biała księga, wideo i sample.code w Programowaniu aplikacji dla serwerów PHP i klientów z Androidem .
źródło
Dla mnie najprostszym sposobem jest użycie dobrego narzędzia do wygenerowania wszystkich wymaganych klas. Osobiście korzystam z tej strony:
http://easywsdl.com/
Obsługuje dość złożone usługi sieciowe i używa ksoap2.
źródło
Proponuję sprawdzić bardzo przydatne narzędzie, które bardzo mi pomogło. Faceci, którzy zajmują się tym projektem, również byli bardzo pomocni. www.wsdl2code.com/
źródło
Jeśli masz problem z wywołaniem usługi sieciowej w systemie Android, możesz użyć poniższego kodu, aby zadzwonić do usługi sieci Web i uzyskać odpowiedź. Upewnij się, że usługa sieci Web zwraca odpowiedź w formacie tabeli danych. Ten kod pomoże ci, jeśli używasz danych z bazy danych SQL Server . Jeśli używasz MYSQL , musisz zmienić jedną rzecz, po prostu zamień słowo NewDataSet z zdania
obj2=(SoapObject) obj1.getProperty("NewDataSet");
na DocumentElementJeśli masz jakiś problem, możesz do mnie napisać ..
źródło
Pobierz i dodaj plik biblioteki SOAP do swojego projektu Nazwa pliku: ksoap2-android-assembly-3.4.0-jar-with-dependencies
Wyczyść aplikację, a następnie uruchom program
Oto kod zgłoszenia serwisowego SOAP
Wynikiem może być JSONObject lub JSONArray Or String
Dla lepszego odniesienia https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/
Dzięki.
źródło
To jest działający przykład korzystania z usług sieciowych SOAP w Androidzie.
** Uwaga :: *** NIE ZAPOMNIJ, ABY DODAĆ plik ksoap2.jar w swoim projekcie, a także dodać uprawnienie do INTERNETU w pliku AndroidManifest *
źródło
Możesz wykonać połączenie mydlane jako post przez http z pewnymi nagłówkami. Rozwiązałem to pytanie bez dodatkowych bibliotek, takich jak ksoap2 Oto kod na żywo otrzymujący zamówienia z usługi mydlanej
źródło
Aby wywołać usługę internetową SOAP z Androida, spróbuj użyć tego klienta
NIE ZAPOMNIJ DODAĆ pliku ksoap2-android.jar na ścieżce kompilacji Java
źródło
Dodaj mydło Libaray (
ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar
):public static String Fn_Confirm_CollectMoney_Approval (
źródło