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 :

Appel d'un service SOAP sous Android


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Appel d'un service SOAP sous Android
    Salut, je suis débutant en android et java, j'essaie d'appeler un service sous android, j'ai créé une classe 'AppelService' dont le code ci dessous:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    import android.util.Log;
     
    public class AppelService {
    	  private static final String NAMESPACE = "http://www.webserviceX.NET";
    	  private static final String URL = "http://www.webservicex.net/globalweather.asmx";
    	  private static final String SOAP_ACTION = "http://www.webserviceX.NET/GetWeather";
    	  private static final String METHOD_NAME = "GetWeather";
     
    	  String getWeather(String CityName, String CountryName) {
    		  String res = null;
    	    try {
    	      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    	      request.addProperty("CityName", CityName);
    	      request.addProperty("CountryName", CountryName);
     
    	      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    	      envelope.setOutputSoapObject(request);
    	      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    	      androidHttpTransport.debug = true;
    	      androidHttpTransport.call(SOAP_ACTION, envelope);
    	      SoapObject objetSOAP = (SoapObject)envelope.getResponse();
    	      res = this.parserObjet(objetSOAP, "Temperature");
     
     
    	    } catch (Exception e) {
    	      Log.e("getWeather", "", e);
    	    }
    		return res;
    	  }
    	  private String parserObjet(SoapObject objet,String property) {
    		    SoapObject meteoObjet = (SoapObject)objet.getProperty("CurrentWeather");
    		    String s= meteoObjet.getProperty(property).toString();
     
    		    return s;
    		  } }
    et puis l'appel de cette classe comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AppelService app=new AppelService() ;
    String s=app.getWeather("Montpellier","France");
    lors de test sur mon pc via un device virtuel (emulateur android), un erreur se produit "unfortunately, Mon_app has stopped"
    est ce quelqu'un peut m'aider et merci

  2. #2
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour

    Regardes ton logcat et postes nous le log que tu y trouves.

    Merci.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Tu ne dis pas *ou* tu fais ton initialisation / appel... mais je subodore que c'est sur un onClick() ou un onCreate() auquel cas, je suis pret à parier que tu recois un "NetworkCallInMainThreadException"...

    Afin qu'une interface reste réactive, le moins de code possible doit être executé pour gérer un évenement de l'UI (click, démarrage/onCreate/onResume). Pour cette raison il y a un moniteur qui vérifie que l'évenement est traité suffisemment rapidement. Si ce n'est pas le cas: Android va afficher une boite de dialogue disant que l'application ne répond plus, et c'est la fin des haricots.

    Comme dans 90% des cas, les raisons de la lenteur sont des appels réseaux (qui en fonction des timeouts variés peut très bien durer 1 minute même pour une petit hit sur une url donnée). Comme les appels Soap.
    Pour éviter que les programmeurs ne fassent systématiquement cette erreur, Android3+ a rajouté une exception systématique dès qu'un appel à une fonction réseau est réalisée dans le thread principal (celui de l'UI).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. [Tutoriel] Utilisation du web service SOAP sous Android
    Par David55 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 28/08/2011, 12h07
  2. Appeler un web service SOAP en php avec un client JavaScript
    Par lord.66 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 31/05/2009, 12h42
  3. Appels de Web services (SOAP) ?
    Par ovdbc dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 17/10/2007, 11h28

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