Générer Java à partir de WSDL pour une utilisation sur Android avec ksoap2-android SOAP client?

je dois accéder à un service Web SOAP existant à partir d'une application Android. J'ai reçu des fichiers WSDL décrivant le service web. Lire quelques autres réponses ici sur SO , il semble ksoap2-android est la voie à suivre, en ce qui concerne le client SOAP à utiliser.

la prochaine question est alors de savoir comment générer les classes Java nécessaires à partir des fichiers WSDL, et c'est là que je vais faire court. Autant que je puisse voir il y a les options suivantes:

  1. AXIS2 générateur de code
  2. WSDL2ksoap
  3. JAX-WS wsimport tool

j'ai d'abord essayé #1, avec le plugin AXIS2 eclipse pour générateur de code wsdl2. L'assistant a réussi à générer beaucoup de code Java, mais il a aussi changé mon projet android en une sorte de webservice project, et je n'ai jamais été en mesure d'obtenir quoi que ce soit qui a été généré pour compiler, et encore moins de travailler avec ksoap2-android. Quelqu'un a du succès avec cette?

Je ne suis pas en mesure d'exécuter wsdl2ksoap avec succès, car il semble nécessiter un service Web en cours d'exécution, et tout ce que j'ai à l'heure actuelle est des fichiers WSDL. De même, à la lecture de la page web, il semble qu'il s'agisse d'un projet dans sa phase initiale, et pas vraiment prêt pour les heures de grande écoute.

JAX-WS wsimport Je n'ai pas eu la chance d'essayer encore. Cependant, je ne suis pas sûr que ce qu'il génère fonctionnera avec ksoap2-android?

Question: Comment puis-je générer des fichiers Java à partir de fichiers WSDL, pour une utilisation sur Android avec ksoap2-android SOAP client library?

Merci beaucoup d'avance.

(PS: Oui, le choix est SOAP, il est sous-optimal pour L'Utilisation Android, mais je ne peux pas changer cela.)

30
demandé sur Community 2012-02-03 11:14:15

6 réponses

j'ai trouvé cet outil pour auto générer wsdl au code android,

http://www.wsdl2code.com/example.aspx

voici le code:

public void callWebService()    {
    SampleService srv1 = new SampleService();
    Request req = new Request();
    req.companyId = "1";
    req.userName = "userName";
    req.password = "pas";
    Response response =  srv1.ServiceSample(req);
}
13
répondu Bennya 2013-07-19 06:11:26

j'ai eu la même situation (je n'avais que le fichier wsdl sans webservice). J'ai utilisé

http://easywsdl.com /

pour générer des classes pour android sans aucun problème. Cet outil utilise la bibliothèque ksoap. La grande chose avec cet outil est qu'il soutient des extensions WCF et des types comme le contrat de données avec l'attribut Isref ou Guid.

11
répondu robocik 2013-11-13 07:04:56

Ma conclusion après un peu de recherche est qu'il n'y est pas (mature) outil disponible, malheureusement. Ni AXIS2 ou JAX-WS ne fonctionnera sur Android, et WSDL2ksoap est tout simplement trop immature pour une utilisation réelle.

cependant il y a un outil propriétaire appelé wsclient++ qui fera le travail vraiment bien. (Lire la mise à jour ci-dessous, lorsqu'il est mis à l'utilisation réelle, il ne tient pas la distance.) Il n'utilise pas le client ksoap2-android bibliothèque, il a son propre.

la bibliothèque client est un peu rudimentaire car elle dépend fortement du transport http, ce qui rend les tests (unités) un peu compliqués. Mais il peut être modifié assez facilement pour permettre DI, car la source est disponible dans le fichier JAR distribué.

le générateur WSDL to java fonctionne cependant parfaitement, et nous fera gagner des tonnes de temps.

mise à Jour Après avoir travaillé avec wsclient++ pour un alors, il est clair que les classes générées sont vraiment brut, et de ne pas traiter les cas d'erreur. (Chaque méthode déclare throws Exception ).

nous n'utilisons plus wsclient++, et je ne recommande à personne de l'utiliser! Nous n'avons pas vraiment trouvé d'alternative de travail, malheureusement. : /

à la fin nous avons converti nos fichiers WSDL en utilisant AXIS2, puis nous avons écrit un paquet de script personnalisé pour dépouiller et transformer les généré des fichiers java pour quelque chose qui va construire sur android en utilisant ksoap2-bibliothèque android. Très hackish, et a besoin de tonnes de travail manuel pour fonctionner. Malheureusement. Si vous trouvez une meilleure façon, ou l'on vient, veuillez fournir une nouvelle réponse.

10
répondu Bjarke Freund-Hansen 2016-09-08 10:25:31

j'ai utilisé pour iPhone trop quelques classes auto-générées que je voulais voir ici aussi.

wsdl2code est un des similaires que j'ai utilisé à iPhone. Donner une url avec le fichier wsdl, vous obtiendrez quelques classes à télécharger. Pour moi la partie la plus difficile c'est de télécharger les pièces requises. Il a fallu plus de 2 minutes de recherche :) ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar nécessaire pour télécharger ad glisser-déposer à l'ADT ( Eclipse) . Il est très facile, surtout si vous avez utilisé la contrepartie à iPhone. - un outil similaire que j'ai utilisées.

cependant dans mon cas je ne suis pas du tout satisfait de la solution, parce que je vois que j'utilise un canon, un ensemble de canons pour tirer un moineau. Dans mon cas, il devrait être utilisé un post HTTP et ne pas inclure les dépendances d'autres bibliothèques.

pour être honnête je ne me soucie pas beaucoup, parce que une fois que le côté serveur croient que nous avons la puissance de batterie illimitée et le plan de données illimité, que je ferme les yeux et je ne attention au marshaling-les frais généraux de unmarshaling, qui utilisent le CPU (batterie ) augmenter les données transmises sur le réseau.

dans le pire des cas, ce devrait être un JSON + POST HTTP pas un SOAP pour les mobiles...

je suggérerais de parler aux gars côté serveur et expliquer pour eux pourquoi il ne sera pas bon s'ils font 2 Cliquez sur wizards et nous faisons d'autres cliquez sur les formulaires pour obtenir le code généré. Au moins si l'application n'est pas énorme, même que devrait être le budget optimiser pour mobile quelques implémentations d'interfaces.

1
répondu 2013-10-21 16:19:26

J'utilise L'outil Apache CXF juste pour créer dto, et j'ai écrit une classe pour effectuer un désembuage de base basé sur le nom des éléments

0
répondu zime 2012-03-09 13:46:53

un peu en retard, mais il y a un générateur de butée ksoap2 en cours de développement, et je l'ai utilisé avec succès pour créer les butées.

http://ksoap2-stub-gen.sourceforge.net /

aussi quelqu'un l'a rendu disponible comme un service en ligne (i.e. vous donnez L'URL de votre WSDL et le service retournera un fichier zip contenant les talons).

http://www.davidgouveia.net/2011/04/online-stub-generator-for-android-applications-using-ksoap2 /

0
répondu András Szepesházi 2012-04-18 16:17:10