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 »
