IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Android Webservice SOAP


Sujet :

Android

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Android Webservice SOAP
    Bonjour,

    Actuellement novice dans le développement Android, je tente de mettre en place une app qui permet de récupérer des données d'un web service.

    Le web service à disposition est développé en Java, il utilise Jax-ws et la norme SOAP 1.2.
    Pour consommer ce web service dans une app android, j'ai utilisé la librairie KSOAP2.

    La connexion au web service se passe bien voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private static final String NAMESPACE ="http://ContratsRegionDWHService";
    private static final String URL = "http://localhost:8080/ContratsRegionDWH/ws/contrat?wsdl";
    private static final String METHOD_NAME = "contratsRegionDWH";
    private static final String SOAP_ACTION = "http://ContratsRegionDWHService/contratsRegionDWH";
     
    public static SoapObject soap(String property, String value)
    			throws IOException, XmlPullParserException {
     
    		SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
     
    		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    				SoapEnvelope.VER11);
     
    		envelope.setOutputSoapObject(request);
    		HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    		androidHttpTransport.call(SOAP_ACTION, envelope);
    		SoapObject soapResult = (SoapObject) envelope.getResponse();
    		return soapResult;
    	}
    soapResult contient bien la réponse de mon webservice.
    Le problème que je rencontre est que le retour de soapResult est de la forme : anyType{contratRegionDTO=anyType{}; }

    Le web service retourne en DTO qui contient plusieurs champs.
    Voici la réponse SOAPUI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
       <S:Body>
          <ns2:contratsRegionDWHResponse xmlns:ns2="http://ContratsRegionDWHService">
             <return>
                <contratRegionDTO libelleRegion="Region Nord" codeRegion="R250"/>
             </return>
          </ns2:contratsRegionDWHResponse>
       </S:Body>
    </S:Envelope>
    Je voudrais récupérer la valeur des champs libelleRegion et codeRegion
    J'ai vu que je devais utiliser un parser xml mais je n'arrive pas à accéder au dto. Quelqu'un a déjà rencontré ce problème ?

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    J'ai effectivement suivi ces tutoriels, mais ils ne m'ont pas permis de résoudre mon problème.

    Mon retour de WS est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    anyType{contratRegionDTO=anyType{}; }
    Hors dans les tutos c'est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    anyType{tTutoriel=anyType{sUrl=http://dsilvera.developpez.com; sAuteur=dsilvera; iNbChapitre=3; fNote=4.5 };
     tTutoriel=anyType{sUrl=http://dsilvera.developpez.com; sAuteur=dsilvera; iNbChapitre=2; fNote=2.5 }; 
     tTutoriel=anyType{sUrl=http://dsilvera.developpez.com; sAuteur=dsilvera; iNbChapitre=1; fNote=3.5 };
     tTutoriel=anyType{sUrl=http://dsilvera.developpez.com; sAuteur=dsilvera; iNbChapitre=5; fNote=5 };
    Existe-t'il un moyen d'accéder à mon contratRegionDTO ?

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Il y a un souci dans la librairie de SOAP
    http://code.google.com/p/ksoap2-andr...s/detail?id=17

    il y a eu un patch pour corriger ce problème dans le 2.5.1, quelle version utilises tu ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Bonjour,

    Je suis en version 2.4 de KSOAP2
    J'utilise le jar ksoap2-android-assembly-2.4-jar-with-dependencies.jar

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Bonjour,

    Je viens de faire le test en changeant la version de KSOAP2, j'utilise dorénavant celle-ci : ksoap2-android-assembly-2.5.8-jar-with-dependencies.jar
    Cela n'a pas résolu mon problème.

    Rien n'est prévu pour les complex type ?

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Pour avoir déjà utilisé kSOAP avec des complex type, ça fonctionnait très bien

    Tu as testé ton web-service avec un client SOAP standard ? (exemple : http://www.soapclient.com/soaptest.html)
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Non comme il fonctionne avec SOAPUI je n'ai pas fait d'autre test.
    Tu as un exemple de code dans lequel tu récupère un complexType avec KSOAP ?

  9. #9
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    A la différence de toi, j'avais un "vrai" retour au moins en log (sans traiter la réponse), et je n'avais pas non plus de notion de mapping objet vis-à-vis du webservice (pas incorporé dedans).

    Mais, au niveau de la récupération, ça donnait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	SoapObject soapObject = (SoapObject) ((SoapObject) soapEvent.getProperty(0)).getProperty(compteur);
    C'est un peu crade, mais bon ...
    Donc, ici, je récupère dans la variable soapObject, l'item numéro "compteur".
    Sachant que "soapEvent" est le flux retourné par le webservice.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/09/2009, 10h02
  2. [Web Service] Appel Webservice SOAP
    Par HaTnuX dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/08/2008, 22h33
  3. webservices soap et php
    Par manuscle dans le forum WinDev
    Réponses: 0
    Dernier message: 16/04/2008, 16h35
  4. Réponses: 1
    Dernier message: 13/02/2007, 17h43
  5. Webservice SOAP et fichier attaché ?
    Par Bruno13 dans le forum Services Web
    Réponses: 13
    Dernier message: 03/04/2006, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo