Si comme moi, vous avez beaucoup cherché comment communiquer avec un Webservice depuis une applications Android, cet article est fait pour vous.
Tout d’abord, j’ai récupéré le paquet suivant :LibWebservice
Je l’ai ensuite dé-zippé à la racine du répertoire « src » du projet présent dans mon workspace. Si le projet était ouvert dans votre éditeur Android préféré, il faudra réactualiser ce dernier en appuyant sur la touche « F5 ». Vous devriez maintenant voir apparaitre les nouveaux fichiers dans l’arborescence de votre éditeur.
Il faut créer une classe avec son constructeur prenant comme paramètre l’URL du Webservice.
public class WebService { private String URL_globale = ""; public WebService(String URL) { this.URL_globale = URL; } }
J’ai ensuite créé une méthode me permettant de tester la connexion avec le WebService. Bien sûr, il faut que la fonction « testConnexion » soit présent dans le Webservice distant et dans notre cas, il faut que cette dernière retourne « OK » si la connexion est correcte.
public boolean tester_la_connexion() throws IOException, XmlPullParserException { final String SOAP_ACTION = "testConnexion"; //Nom de la fonction du Webservice final String METHOD_NAME = "testConnexion"; //Nom de la fonction du Webservice StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); // Création de la requête SOAP SoapObject request = new SoapObject (NAMESPACE, METHOD_NAME); //Ajout de propriété: addProperty(nom de variable, valeur) -> Le nom de la variable vient du Webservice request.addProperty("SecureKey", SECURE_KEY); //Je passe une "secure key" qui permet d'identifier l'application (facultatif) //Mise dans l'enveloppe SOAP des données SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope.VER11); //Préparation de la requête envelope.setOutputSoapObject (request); HttpTransportSE androidHttpTransport = new HttpTransportSE (URL_globale); androidHttpTransport.debug = false; //Envoi de la requête androidHttpTransport.call (SOAP_ACTION, envelope); //Envoi au Webservice Object soapResult = envelope.getResponse(); //Récupération du résultat if(soapResult.toString().equals("OK")) { return true; } else { return false; } }
A vous d’adapter cette méthode en fonction de vos besoins et de vos fonctions.
Il ne vous reste plus qu’à instancier la classe « WebService » et vous servir de la fonction « tester_la_connexion »