Communiquer avec un Webservice

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 »