Il n'existe pas d'API en standard pour appeler un webservice sous android. Une solution est d'utiliser la librairie ksoap2 pour android.
Les choses ne sont pas aussi triviales qu'avec le Flex, et il faut construire à la main sa requête SOAP, et ensuite parser le résultat soi-même.
On commence par construire une requête:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
Les paramètres de la requête sont transmis par la méthode addProperty :
request.addProperty("NomDeParametre", "ValeurDuParametre");
Puis une enveloppe SOAP est créée pour encapsuler la requête :
SoapSerializationEnvelope envelope
= new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
Notre SOAP est lui même encapsulé dans une enveloppe HTTP :
HttpTransportSE httpTransport = new HttpTransportSE(URL);
On appelle le service :
httpTransport.call(SOAP_ACTION, envelope);
La réponse, brute, est alors disponible dans l'enveloppe HTTP, sous forme de String:
responseDump = httpTransport.responseDump;
Vous pouvez utiliser la réponse, en appelant la méthode getResponse. Dans la pratique, l'étape de lecture et parsing du XML est très longue avec la librairie ksoap2, et le résultat pas exploitable en l'état.
Et il vaut mieux parser soi-même la réponse XML :
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader ( responseDump ) );
...
Toutes ces explications, c'était la théorie. Dans la réalité, tout ne fonctionne pas "out-of-the-box", et il faudra retoucher/étendre la classe SoapSerializationEnvelope, ou retoucher/étendre la classe HttpTransportSE (notamment pour gérer l'authentification).
Passons à la pratique avec un cas simple: la visualisation d'une fiche client.
Bonjour,
RépondreSupprimerje vous remercie pour votre blog.
J'aimerais parser moi même ma reponseDump et pour l'instant je suis bloqué car je ne sais pas comment faire. Vous pourriez m'aider svp.
Merci d'avance.
voila j'ai deja fais la meme chose vous pouvez voir sa sur mon blog
RépondreSupprimerhttp://sap-android.blogspot.com/