Ich habe große Probleme, gute Informationen zum Aufrufen eines Standard-SOAP / WSDL-Webdienstes mit Android zu finden. Alles, was ich finden konnte, sind entweder sehr komplizierte Dokumente und Verweise auf "kSoap2" und dann ein bisschen über das manuelle Parsen von allem mit SAX . OK, das ist in Ordnung, aber es ist 2008, also dachte ich mir, dass es eine gute Bibliothek zum Aufrufen von Standard-Webdiensten geben sollte.
Der Webdienst ist im Grunde nur ein in NetBeans erstellter . Ich hätte gerne IDE-Unterstützung für die Generierung der Sanitärklassen. Ich brauche nur die einfachste / eleganteste Möglichkeit, einen WSDL- basierten Webdienst von einem Android-basierten Telefon aus zu kontaktieren .
Antworten:
Android bietet keine SOAP-Bibliothek. Sie können entweder Ihre eigenen schreiben oder so etwas wie kSOAP 2 verwenden . Wie Sie bemerken, konnten andere kSOAP2 in ihren eigenen Projekten kompilieren und verwenden, aber ich musste nicht.
Google hat bisher wenig Interesse daran gezeigt, Android eine SOAP-Bibliothek hinzuzufügen. Mein Verdacht dafür ist, dass sie lieber die aktuellen Trends bei Webdiensten hin zu REST-basierten Diensten unterstützen und JSON als Datenkapselungsformat verwenden. Oder verwenden Sie XMPP für Messaging. Das ist aber nur eine Vermutung.
XML-basierte Webdienste sind derzeit unter Android eine nicht triviale Aufgabe. Da ich NetBeans nicht kenne, kann ich nicht mit den dort verfügbaren Tools sprechen, aber ich stimme zu, dass eine bessere Bibliothek verfügbar sein sollte. Es ist möglich, dass der XmlPullParser Sie vor der Verwendung von SAX bewahrt, aber ich weiß nicht viel darüber.
quelle
org.apache.http.impl.client.DefaultHttpClient
kommt standardmäßig im Android SDK. Dadurch werden Sie mit der WSDL verbunden.quelle
Es ist wahr, dass SOAP aufgrund seines Overheads nicht die beste Wahl für den Datenaustausch mit mobilen Geräten ist. Möglicherweise befinden Sie sich jedoch in einer Situation, in der Sie das Format der Serverausgabe nicht steuern.
Wenn Sie sich also an SOAP halten müssen, gibt es hier eine für Android gepatchte kSOAP2-Bibliothek:
http://code.google.com/p/ksoap2-android/
quelle
Um einen Webdienst von einem mobilen Gerät (insbesondere auf einem Android-Telefon) aus aufzurufen, habe ich eine sehr einfache Methode verwendet. Ich habe keine Webdienst-Client-API verwendet, um den Webdienst aufzurufen. Mein Ansatz ist wie folgt, um einen Anruf zu tätigen.
HttpURLConnection
.getResonseCode
).ErrorInput
Stream auf demselben HTTP-Objekt und erhalten Sie den Fehler, falls vorhanden.Ich habe dieses Verfahren für das Android-Telefon implementiert und es wird erfolgreich ausgeführt. Ich kann die Antwort analysieren, auch wenn sie mehr als 700 KB beträgt.
quelle
SOAP ist aufgrund des erforderlichen Verarbeitungs- / Analyse-Overheads eine ungeeignete Technologie für die Verwendung auf Android (oder Mobilgeräten im Allgemeinen). Ein REST-Service ist eine leichtere Lösung, und das würde ich vorschlagen. Android wird mit einem SAX-Parser geliefert, dessen Verwendung ziemlich trivial ist. Wenn Sie unbedingt SOAP auf einem mobilen Gerät verarbeiten / analysieren müssen, tut mir das leid. Der beste Rat, den ich anbieten kann, ist, SOAP nicht zu verwenden.
quelle
Vor ungefähr einem Jahr habe ich diesen Thread gelesen, um herauszufinden, wie SOAP-Aufrufe unter Android ausgeführt werden. Die Vorschläge, mit HttpClient meine eigenen zu erstellen, haben dazu geführt, dass ich meine eigene SOAP-Bibliothek für Android erstellt habe:
IceSoap
Grundsätzlich können Sie Umschläge erstellen, die über eine einfache Java-API gesendet werden sollen, und diese dann automatisch in Objekte analysieren, die Sie über XPath definieren ... zum Beispiel:
Wird:
Ich habe es für mein eigenes Projekt verwendet, aber ich dachte, es könnte einigen anderen Menschen helfen, also habe ich einige Zeit damit verbracht, es zu trennen und zu dokumentieren. Ich würde es wirklich lieben, wenn einige Ihrer armen Seelen, die beim Googeln von "SOAP Android" über diesen Thread stolpern, es versuchen und etwas davon profitieren könnten.
quelle
quelle
Ich hatte meine Erfahrung mit KSOAP; Ich habe mich für einen einfacheren Ansatz entschieden.
Erstellen Sie bei einer gegebenen WSDL-Datei SOAP-Anforderungsvorlagen für jede Anforderung (z. B. mithilfe der SOAP-Benutzeroberfläche) und ersetzen Sie dann die im Code zu übergebenden Werte. POSTEN Sie diese Daten mithilfe der DefaultHttpClient-Instanz an den Service-Endpunkt und rufen Sie den Antwortstrom ab. Analysieren Sie den Antwortstrom mit einem XML-Pull-Parser.
quelle
Sie können sich WSClient ++ ansehen
quelle
Ich habe einen neuen SOAP-Client für die Android-Plattform erstellt. Es wird eine von JAX-WS generierte Schnittstelle verwendet, dies ist jedoch bislang nur ein Proof-of-Concept.
Wenn Sie interessiert sind, versuchen Sie bitte das Beispiel und / oder schauen Sie sich die Quelle bei AndroidSOAP an .
quelle
Wenn Sie können, entscheiden Sie sich für JSON. Android wird mit dem kompletten org.json-Paket geliefert
quelle
Rufen Sie die ksoap2- Methoden auf. Es funktioniert sehr gut.
Richten Sie die Details wie ein
und dann, um das Ergebnis zu erhalten, tun
quelle
Ich hoffe, das Aufrufen eines Webdienstes von Android hilft.
quelle
Vor ein paar Monaten habe ich mit dem jax-ws-Webdienst in der j2ee-Anwendung gearbeitet. Dort haben wir CXF wsdl2java verwendet, um einen WS-Client-Stub aus der WSDL-Datei zu generieren, und mit diesen Client-Stubs haben wir die Webdienste verwendet. Vor ein paar Wochen, als ich versuchte, den Webdienst auf die gleiche Weise auf der Android-Plattform zu nutzen, konnte ich das nicht, weil das Android-Glas nicht alle "jax-ws" -Unterstützungsklassen enthält. Dieses Mal habe ich kein solches Tool gefunden (wenn ich nicht effizient googeln konnte), um meine Anforderungen zu erfüllen -
Also habe ich mein eigenes Android SOAP Client Generation Tool entwickelt . Wo müssen Sie diese Schritte ausführen:
z.B:
quelle
Ich bin sicher, Sie könnten mit Axis einen kleinen SOAP-Client erstellen . Installationsanweisungen für die Achse .
quelle
Ich denke, Call SOAP Web Service von Android-Anwendung wird Ihnen sehr helfen.
quelle
Befolgen Sie diese Schritte mit der Methode SOAP
Aus der WSDL-Datei
Erstellen Sie SOAP-Anforderungsvorlagen für jede Anforderung.
Ersetzen Sie dann die Werte, die im Code übergeben werden sollen.
POSTEN Sie diese Daten mithilfe der DefaultHttpClient-Instanz an den Service-Endpunkt.
Holen Sie sich den Antwort-Stream und schließlich
Analysieren Sie den Antwortstrom mit einem XML-Pull-Parser.
quelle
Wenn Sie JSON verwenden können, gibt es ein Whitepaper, ein Video und den Beispielcode unter Entwickeln von Anwendungsdiensten mit PHP-Servern und Android-Telefonclients .
quelle
Für mich ist es am einfachsten, mit einem guten Tool alle erforderlichen Klassen zu generieren. Persönlich benutze ich diese Seite:
http://easywsdl.com/
Es unterstützt recht komplexe Webdienste und verwendet ksoap2.
quelle
Ich würde vorschlagen, ein sehr nützliches Tool auszuprobieren, das mir sehr geholfen hat. Die Leute, die sich um dieses Projekt kümmern, waren auch sehr hilfreich. www.wsdl2code.com/
quelle
Wenn Sie Probleme beim Aufrufen des Webdienstes in Android haben, können Sie den folgenden Code verwenden, um den Webdienst aufzurufen und eine Antwort zu erhalten. Stellen Sie sicher , dass Ihr der Webdienst die Antwort in das Rückdatentabellenformat .this Code wird Ihnen helfen , wenn Sie Daten aus der Verwendung von SQL Server - Datenbank. Wenn Sie MYSQL verwenden , müssen Sie eines ändern , indem Sie einfach das Wort NewDataSet aus dem Satz
obj2=(SoapObject) obj1.getProperty("NewDataSet");
durch DocumentElement ersetzenWenn Sie diesbezüglich ein Problem haben, können Sie mir schreiben.
quelle
Bitte laden Sie die SOAP-Bibliotheksdatei herunter und fügen Sie sie mit Ihrem Projekt hinzu. Dateiname: ksoap2-android-assembly-3.4.0-jar-with-dependencies
Reinigen Sie die Anwendung und starten Sie das Programm
Hier ist der Code für den SOAP-Serviceabruf
Die Ergebnisse können JSONObject oder JSONArray oder String sein
Für Ihre bessere Referenz, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/
Vielen Dank.
quelle
Dies ist ein funktionierendes Beispiel für die Nutzung von SOAP-Webdiensten in Android.
** Hinweis :: *** VERGESSEN SIE NICHT, ksoap2.jar in Ihrem Projekt hinzuzufügen und fügen Sie auch die INTERNET-Berechtigung in der AndroidManifest-Datei hinzu *
quelle
Sie können einen Seifenaufruf als Post über http mit bestimmten Headern ausführen. Ich habe diese Frage ohne zusätzliche Bibliotheken wie ksoap2 gelöst. Hier ist Live-Code, der Bestellungen vom Seifenservice erhält
quelle
Versuchen Sie, diesen Client zu verwenden, um einen SOAP-Webdienst von Android aus aufzurufen
VERGESSEN SIE NICHT, ksoap2-android.jar in Ihren Java-Build-Pfad einzufügen
quelle
Seife Libaray hinzufügen (
ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar
) :öffentliche statische Zeichenfolge Fn_Confirm_CollectMoney_Approval (
quelle