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 :

Authentification avec KSOAP


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Par défaut Authentification avec KSOAP
    Bonjour,

    J'utilise KSOAP pour consommer un WebService.

    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
    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
        int SDK_INT = android.os.Build.VERSION.SDK_INT;
        if (SDK_INT > 8) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
     
            SoapSerializationEnvelope envelope = null;
            String NAMESPACE ="http://tempuri.org/";
     
            String METHOD_NAME = "Cree_Repas";
     
            String SOAP_ACTION = "http://..../" ;
     
            String URL = "mon url";
     
            AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
     
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
     
            PropertyInfo _dateProperty = new PropertyInfo();
     
            _dateProperty.type =  MarshalDate.class;  
            _dateProperty.name = "dateHeure_Demande";
            request.addProperty(_dateProperty);  
     
            request.addProperty("Repas", Constant.Last);
            envelope.dotNet = true; 
            //envelope.headerOut = header;
            envelope.setOutputSoapObject(request);
     
            envelope.setAddAdornments(false);
            envelope.implicitTypes = true;
     
                    try
                    {
                        httpTransportSE.call(SOAP_ACTION, envelope,);
     
                        Object response = (Object)envelope.getResponse();
     
                        return true;
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
     
                        return false;
                    }
    Le webservice expose l'opération comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <wsdl:operation name="Cree_Repas">
        <wsdl:input wsaw:Action="http://tempuri.org/IService/Cree_Repas" message="tns:IService_Cree_Repas_InputMessage"/>
        <wsdl:output wsaw:Action="http://tempuri.org/IService/Cree_RepasResponse" message="tns:IService_Cree_Repas_OutputMessage"/>
    </wsdl:operation>
    et dans un autre URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xs:complexType name="Auth_Hvx">
    <xs:sequence>
    <xs:element minOccurs="0" name="Mot_De_Passe" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="Utilisateur" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    En créant un client en Java EE, j'appelle Cree_Repas tout simplement en appellant le classe auto-generée et je lui passe un objet Auth_Hvx qui prend le mot de passe et le nom d'utilisateur.

    Mon problème est dans le cas de KSOAP sous Android, le serveur me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Mot_De_Passe = null
    utilisateur = null
    Les solutions testées :
    Créer un header
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    org.kxml2.kdom.Element[] header = new   org.kxml2.kdom.Element[1];
    header[0] = new Element().createElement("http....", "Auth_Hvx");
     
    Element username = new Element().createElement("http:..", "Utilisateur");
    username.addChild(Node.TEXT, "user");
    header[0].addChild(Node.ELEMENT, username);
     
    Element password = new Element().createElement("http://...", "Mot_De_Passe");
    password.addChild(Node.TEXT, "monPassword");
    header[0].addChild(Node.ELEMENT, password);
     
    envelope.headerOut = header;
    Même erreur.

    2ème test, utiliser un propertyInfo utilisateur et faire un addProperty de l'enveloppe et toujours le même problème.

    Est-ce le httpTransportSE qui a besoin d'une chaîne d'authentification ?

    Le serveur expose aussi une opération d'authentification mais j'ai la même erreur en essayant de consommer le service d'authentification.

    Quelqu'un aurait-il une idée sur comment intégrer l'authentification ?

    J'ai parcouru les forums, sans succès.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Par défaut
    La solution :

    les paramètres d'authentification sont des complexType alors il faut créer une classe qui implement
    avec un constructeur qui prends l'identifiant et le mot de passe puis dans la consommation du service

    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
       PropertyInfo pi = new PropertyInfo();
       pi.setName("auth_Hvx");
       pi.setValue(auth_Hvx);
       pi.setType(Auth_Hvx..class);
       pi.nameSpace =namespace;
       request.addProperty(pi);
     
       envelope.addMapping("http://..../", "", new Auth_Hvx().getClass());
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification Digest avec KSOAP
    Par David55 dans le forum Android
    Réponses: 2
    Dernier message: 25/07/2013, 17h39
  2. prob d'authentification avec Java Script !!!!!
    Par King_T dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/05/2006, 19h18
  3. Réponses: 2
    Dernier message: 10/05/2006, 07h50
  4. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40
  5. [MySQL] mécanisme d'authentification avec BD
    Par lalyly dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2005, 13h26

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