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 :

Ksoap2 et WebServices


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Points : 21
    Points
    21
    Par défaut Ksoap2 et WebServices
    Bonjour à tous,

    J'ai actuellement un service web (en .NET) que j'aimerais faire communiquer avec une application Android (librairie ksoap2).

    Mon service est fonctionnel si je veux laisser une trace dans une application console en .NET.
    Il est également fonctionnel côté Java, si je retourne le résultat dans une classe "Main" toute bête.


    J'ai surligné le résultat attendu.

    Mon problème: lorsque je génère l'apk et que je test l’application sur mon smartphone, je n'ai pas les champs renseignés.

    A la place d'avoir:
    Response : Search : vendeur - Vendeur ; ; Service commercial ;
    J'ai:
    Response : Search : - ; ; ;
    Donc le paramètre passé n'est pas affiché, et le résultat de ma requête entre les ";" non plus.

    Voici le code complet de ma classe Java pour le test sur mon téléphone:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    public class TestActivity extends Activity 
    {
          private static final String  SOAP_ACTION = "http://tempuri.org/IService1/Request";
          private static final String  NAMESPACE   = "http://tempuri.org/";
          private static final String  METHOD_NAME = "Request";
          private static final String  URL   = "http://extranet.synergy.fr/webservicema/Service1.svc?wsdl";
          private EditText editText;
          private Button button;
          private String research="";
          private static String soapResult = "";
     
          /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) 
        {
          super.onCreate(icicle);
     
            setContentView(R.layout.main);
            editText = (EditText) findViewById(R.id.EditTextPrenom);
     
            button = (Button) findViewById(R.id.ButtonEnvoyer);
            button.setOnClickListener(
     
                new OnClickListener() {
                public void onClick(View v) {
                      research = editText.getText().toString();
                      String soapResult = soap("research", "marge");
     
                      //Affichage du résultat
                      soapResult = "Résultat du mot clé " + research + " : " + soapResult;
                    ((TextView)findViewById(R.id.TextViewHello)).setText(soapResult);
                }
            }
            );
        }
     
        public static String soap (String property, String value)
          {
                // Création de la requête SOAP
                SoapObject request = new SoapObject (NAMESPACE, METHOD_NAME);
                if (property != null)
                {
                      request.addProperty(property, value);
                      soapResult = "Good Property : " + property + " - " + value;
                }
                else
                {
                    return "Erreur Property";
                }
                //Toutes les données demandées sont mises dans une enveloppe.
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope.VER11);
                envelope.dotNet = true;
                envelope.setOutputSoapObject (request);
                HttpTransportSE androidHttpTransport = new HttpTransportSE (URL);
     
                androidHttpTransport.debug = true; 
     
                //Envoi de la requête
                      androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
     
                      try {
                        androidHttpTransport.call (SOAP_ACTION, envelope);
                    } catch (IOException e1) {
                        return "IOException";
                    } catch (XmlPullParserException e1) {
                        return "XmlPullParserException";
                    }
     
     
                try {
                    soapResult = soapResult + " et contenu de l'enveloppe = " + envelope.getResponse().toString();
                } catch (SoapFault e) {
                    e.printStackTrace();
                }
                //soapResult = soapResult + " et contenu de l'enveloppe = " + envelope.bodyIn.toString();
                  return soapResult;
          }
    Je ne comprends pas pourquoi cela fonctionne dans un main tout simple (mon WebService est bien appelé et est fonctionnel !) alors que lorsque j'utilise le code complet pour générer mon .apk et tester sur le smartphone, je n'obtiens pas de résultat (on dirait que le paramètre n'est pas pris en compte).

    Y a-t-il un point à configurer dans le code ? J'ai cherché la solution depuis très longtemps sur le net, et rien n'a fonctionné.

    D'avance merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 280
    Points : 261
    Points
    261
    Par défaut
    Bonjour,

    perso j'ai utilisé cette techno lors d'un projet cette année en cours... on a du la laisser de coté car ksoap à une issue qui n'a, j'ai bien l'impression... pas été corrigé...

    La connection était bonne, mais on arrivait pas à recevoir les données ...

    Ça ne t'aide pas vraiment, mais bon... je préfère partager ma mauvaise expérience
    Paye Tes Dettes - Applciation android.

    DevHackSecure - Pense bête d'un étudiant en informatique - Tutos DEV

    " I also realize that _everybody_ thinks that they are right, and that they are supported by all other right-thinking people. That's just how people work. We all think we're better than average." Linus Torvalds

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta réponse ainsi que ton retour
    Pour ma part, j'ai actuellement mis de côté ce projet, ne trouvant pas d'issue favorable...

    Je suis assez déçu, car je pense être à deux doigts de faire fonctionner la machine (ça fonctionne bien dans une classe Main....!).
    J'y reviendrai plus tard je pense.

    Bien à toi.
    A+

  4. #4
    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
    Il y a beaucoup d'endroits ou les exceptions "disparaissent" (e.printStackTrace())....

    D'une part utiliser Log.e("MONAPP","Erreur à tel ou tel endroit",ex); à la place (LogCat, StackTrace, Cause de l'exception etc...).
    D'autre part renvoyer au maximum les exceptions à l'appelant quand cela fait sens (fonction 'soap' par exemple).

    Pour finir, sur quelle version d'Android ?
    Parce que à ce que je vois, il y a un appel à un webservice à l'interieur d'un évenement onClick, ce qui est interdit depuis toujours, et vérifié par le système (avec une exception 'NetworkOnUiThread') depuis Android3.0

    L'ensemble de toutes les causes pouvant résulter à cela....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/04/2011, 14h43
  2. J2ME Webservice ksoap2
    Par bilelski dans le forum Java ME
    Réponses: 6
    Dernier message: 07/05/2010, 15h00
  3. [XMLRAD] Security des WebModules et/ou des WebServices
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 18/12/2002, 17h09
  4. WebService Google sur builder 5?
    Par billuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/11/2002, 19h43

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