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 :

Parser une réponse KSOAP


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut Parser une réponse KSOAP
    Salut tout le monde,

    Je développe une application qui appel des services web et j'affiche le résultat. Je ne sais pas si ma méthodologie est bien ou non de plus j'ai un petit souci de récupération de résultat dans certain service web un peu compliqué a parsé.

    j'ai crée une méthode qui retourne un vecteur qui contient les résultats.
    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
     
    public static Vector CallWS_listWorkitem (String nom)
    	{
    		Vector<String> rs =  new Vector<String> ();
     
    		try {
    			// Create SOAP request
     
    			SoapObject request = new SoapObject(NAMESPACE,"Zmafonctionsws6");
    			request.addProperty("Nom", nom);
    			request.addProperty("WiId", "");
    			request.addProperty("WiType", "");
    			request.addProperty("WiCreator", "");
    			request.addProperty("WiLang", "");
    			request.addProperty("WiText", "");
    			request.addProperty("WiRhtext", "");
    			request.addProperty("WiCd", "");
    			request.addProperty("WiCt", "");
    			request.addProperty("WiAagent", "");
    			request.addProperty("WiChckwi", "");
    			request.addProperty("WiRhTask", "");
    			request.addProperty("WiPrio", "");
    			request.addProperty("WiConfirm", "");
    			request.addProperty("WiReject", "");
    			request.addProperty("WiForwBy", "");
    			request.addProperty("WiDisable", "");
    			request.addProperty("Statustext", "");
    			request.addProperty("WiStat", "");
    			request.addProperty("WiLed", "");
    			request.addProperty("WiLet", "");
    			request.addProperty("Typetext", "");
    			request.addProperty("Tclass", "");
    			request.addProperty("NoteExist", "");
    			request.addProperty("WiDhStat", "");
    			request.addProperty("Dhstatext", "");
    			request.addProperty("NoExecute", "");
    			request.addProperty("WiRelease", "");
    			request.addProperty("WiCdFtd", "");
    			request.addProperty("WiCtFtd", "");
    			request.addProperty("WiLedFtd", "");
    			request.addProperty("WiLetFtd", "");
    			request.addProperty("WiAaName", "");
    			request.addProperty("DefGuid", "");
    			request.addProperty("WiCrtts", "");
    			request.addProperty("NoteCount", "");
    			request.addProperty("WiCompEv", "");
    			request.addProperty("Proccat", "");
     
     
    			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    			envelope.setOutputSoapObject(request);
    			HttpTransportSE androidHttpTransport = new HttpTransportSE(URL2);
    			androidHttpTransport.call(SOAP_ACTION2, envelope);
    			SoapObject body = (SoapObject)envelope.bodyIn;
    			SoapObject sous_body = (SoapObject) body.getProperty("WkList");
    			SoapObject sous_body_item = (SoapObject) body.getProperty("item");
     
    			rs.addElement((String)sous_body_item.getProperty("WiText").toString());
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
     
     
    		return rs;
    	}
    je me suis basé pour la création de la demande et le parsing de la réponse sur le fichier xml suivant.

    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
     
    <soapenv:Body>
          <urn:Zmafonctionsws6>
             <Nom>?</Nom>
             <!--Optional:-->
             <WkList>
                <!--Zero or more repetitions:-->
                <item>
                   <WiId>?</WiId>
                   <WiType>?</WiType>
                   <WiCreator>?</WiCreator>
                   <WiLang>?</WiLang>
                   <WiText>?</WiText>
                   <WiRhtext>?</WiRhtext>
                   <WiCd>?</WiCd>
                   <WiCt>?</WiCt>
                   <WiAagent>?</WiAagent>
                   <WiChckwi>?</WiChckwi>
                   <WiRhTask>?</WiRhTask>
                   <WiPrio>?</WiPrio>
                   <WiConfirm>?</WiConfirm>
                   <WiReject>?</WiReject>
                   <WiForwBy>?</WiForwBy>
                   <WiDisable>?</WiDisable>
                   <Statustext>?</Statustext>
                   <WiStat>?</WiStat>
                   <WiLed>?</WiLed>
                   <WiLet>?</WiLet>
                   <Typetext>?</Typetext>
                   <Tclass>?</Tclass>
                   <NoteExist>?</NoteExist>
                   <WiDhStat>?</WiDhStat>
                   <Dhstatext>?</Dhstatext>
                   <NoExecute>?</NoExecute>
                   <WiRelease>?</WiRelease>
                   <WiCdFtd>?</WiCdFtd>
                   <WiCtFtd>?</WiCtFtd>
                   <WiLedFtd>?</WiLedFtd>
                   <WiLetFtd>?</WiLetFtd>
                   <WiAaName>?</WiAaName>
                   <DefGuid>?</DefGuid>
                   <WiCrtts>?</WiCrtts>
                   <NoteCount>?</NoteCount>
                   <WiCompEv>?</WiCompEv>
                   <Proccat>?</Proccat>
                </item>
             </WkList>
          </urn:Zmafonctionsws6>
       </soapenv:Body>
    après j'ai appelé la méthode mais une erreur de type :

    ERROR/AndroidRuntime(297): java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0

    Finalement ma question est ce que la construction de la demande SoapObject est correcte suivant le fichier XML et ce que c'est judicieux d'utilisé comme type retour vector ou je doit choisir un autre type

    merci,

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut probléme 1 résolu il reste le 2 :-)
    Bonjour

    J'espère que mon sujet vous intéresse un peu plus :-) entre temps j'ai avancé un peu j'ai pu résoudre le problème en faite j'ai teste mon service web en dehors de mon application avec soapGUI (un bon outils) le problème c'est que j'aurai du mettre une valeur à chaque attribut.
    Maintenant j'arrive à récupérer le résultat mais seulement de premier attribut item j'arrive pas a récupérer tout les autres voici un extrait la réponse en xml du service web .

    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
       <soap-env:Header/>
       <soap-env:Body>
          <n0:Zmafonctionsws6Response xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
             <ReturnCode>0</ReturnCode>
             <WkList>
                <item>
                   <WiId>000000000000</WiId>
                   <WiType>a</WiType>
                   <WiCreator>a</WiCreator>
                   <WiLang>0</WiLang>
                   <WiText>a</WiText>
                   <WiRhtext>a</WiRhtext>
                   <WiCd>0000-00-00</WiCd>
                   <WiCt>00:00:00</WiCt>
                   <WiAagent>a</WiAagent>
                   <WiChckwi>000000000000</WiChckwi>
                   <WiRhTask>a</WiRhTask>
                   <WiPrio>0</WiPrio>
                   <WiConfirm>a</WiConfirm>
                   <WiReject>a</WiReject>
                   <WiForwBy>a</WiForwBy>
                   <WiDisable>a</WiDisable>
                   <Statustext>a</Statustext>
                   <WiStat>a</WiStat>
                   <WiLed>0000-00-00</WiLed>
                   <WiLet>00:00:00</WiLet>
                   <Typetext>a</Typetext>
                   <Tclass>a</Tclass>
                   <NoteExist>a</NoteExist>
                   <WiDhStat>0000</WiDhStat>
                   <Dhstatext>a</Dhstatext>
                   <NoExecute>a</NoExecute>
                   <WiRelease>a</WiRelease>
                   <WiCdFtd>a</WiCdFtd>
                   <WiCtFtd>a</WiCtFtd>
                   <WiLedFtd>a</WiLedFtd>
                   <WiLetFtd>a</WiLetFtd>
                   <WiAaName>a</WiAaName>
                   <DefGuid>a</DefGuid>
                   <WiCrtts>0.0</WiCrtts>
                   <NoteCount>0</NoteCount>
                   <WiCompEv>a</WiCompEv>
                   <Proccat>a</Proccat>
                </item>
                <item>
                   <WiId>000000863690</WiId>
                   <WiType>D</WiType>
                   <WiCreator>FLOWITEM  0000008636830000000048000000</WiCreator>
                   <WiLang>E</WiLang>
                   <WiText>Missed Deadline:Employee Mr. Charles Aaron : Approve notification of absence</WiText>
                   <WiRhtext/>
                   <WiCd>2010-07-28</WiCd>
                   <WiCt>13:43:17</WiCt>
                   <WiAagent/>
                   <WiChckwi>000000863684</WiChckwi>
                   <WiRhTask/>
                   <WiPrio>5</WiPrio>
                   <WiConfirm/>
                   <WiReject/>
                   <WiForwBy/>
                   <WiDisable/>
                   <Statustext>Ready</Statustext>
                   <WiStat>READY</WiStat>
                   <WiLed>0000-00-00</WiLed>
                   <WiLet>00:00:00</WiLet>
                   <Typetext>Missed Deadline</Typetext>
                   <Tclass/>
                   <NoteExist/>
                   <WiDhStat>8996</WiDhStat>
                   <Dhstatext>Latest start</Dhstatext>
                   <NoExecute/>
                   <WiRelease>700</WiRelease>
                   <WiCdFtd>28.07.2010</WiCdFtd>
                   <WiCtFtd>13:43:17</WiCtFtd>
                   <WiLedFtd>00.00.0000</WiLedFtd>
                   <WiLetFtd>00:00:00</WiLetFtd>
                   <WiAaName>No Agent Available</WiAaName>
                   <DefGuid>WS30000015    WS300000150009E0000000048S</DefGuid>
                   <WiCrtts>0.0</WiCrtts>
                   <NoteCount>0</NoteCount>
                   <WiCompEv/>
                   <Proccat/>
                </item>
    ........................................ ect
                  </WkList>
          </n0:Zmafonctionsws6Response>
       </soap-env:Body>
    </soap-env:Envelope>
    y a t-il un moyen pour récupérer tout les information dans chaque attribut item j'ai essayé de faire une boucle mais ça ne marche pas

    merci

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Bonjour,
    Ca ressemble beaucoup à du XML tout ça.
    Tu as essayé de faire un parser ?
    Si tu ne sais pas comment t'y prendre, il y a pleins de tutos là dessus sur internet

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Bonjour,
    merci pour votre réponse. En effet, c'est du XML mais comme il s'agit d'un application android et j'utilise la librairie KSOAP pour les service web alors je me suis dit peut être quelqu'un a rencontré ce genre de problème
    actuellement j'essaye quelque truc si ça marche je le postule



    Citation Envoyé par AndroChristophe Voir le message
    Bonjour,
    Ca ressemble beaucoup à du XML tout ça.
    Tu as essayé de faire un parser ?
    Si tu ne sais pas comment t'y prendre, il y a pleins de tutos là dessus sur internet

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52

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

Discussions similaires

  1. Parser une réponse SOAP
    Par RAMIREZ13 dans le forum Android
    Réponses: 2
    Dernier message: 21/07/2011, 18h19
  2. parser une réponse KSOAP
    Par lotfi-g dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/06/2011, 11h14
  3. [ORBEON]Parser une réponse SOAP
    Par DonKnacki dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 03/05/2010, 09h24
  4. [Web Service] Parser une réponse SOAP ARRAY
    Par vanmouniren dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/02/2010, 13h46
  5. [Ajax] Parser une réponse texte
    Par bleach1234 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/03/2009, 09h39

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