Récupérer un tableau d'une méthode distante avec ksoap2

Contenu du snippet

Cette classe permet de récupérer une méthode distante de type tableau d'objet avec KSoap2. Après sept heures de recherches sur internet, on perçoit rapidement que l'utilité de cette API est remise en question, surtout que les téléphones mobiles n'offrent pas vraiment de bonne perspectives en la matière.

Source / Exemple :


package org.connexion;
import java.io.IOException;
import java.util.Vector;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransport;

/**
 *

  • @author SoftDeath
  • /
public class ConnexionSOAP { public Object resultatRequeteSOAP = null; public SoapObject retour = null; public Object[] retourTab = null; public SoapObject objetSOAP; private HttpTransport connexionServeur = null; private SoapSerializationEnvelope envelope = null ; public HttpTransport getConnexionServeur() { return connexionServeur; } // nom du service private String nomService = ""; // url du service private String urlService = ""; // méthode du service private String methodeChoisie = ""; // constructeur soap public ConnexionSOAP (String urlService){ this.urlService = urlService; try{ // etape 1 création du module de connexion HTTP this.connexionServeur = new HttpTransport ( this.urlService ); this.connexionServeur.debug = true; }catch(Exception e){ e.printStackTrace (); } // return connexionServeur; } // se connecter au serveur et retourner l'instance // public void connexionServeur(String urlService){} // création de l'objet SOAP et retourner l'objet public void objetSoap(String nomService, String methodeChoisie, Vector arg){ this.nomService = nomService; this.methodeChoisie = methodeChoisie; try{ //création objet SOAP this.objetSOAP = new SoapObject (nomService, methodeChoisie ); //ajout des proprietés pour cette méthode if(arg != null){ for(int i=0; i<arg.size(); i++) this.objetSOAP.addProperty("arg"+i, arg.elementAt(i)); } }catch(Exception e){ e.printStackTrace (); } // return objetSOAP; } public void envelope(){ try{ // création d'un objet qui contiendra nos propriétés this.envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11); this.envelope.bodyOut = this.objetSOAP; // création de l'objet SOAP ok }catch(Exception e){ e.printStackTrace (); } //return this.envelope; } public SoapSerializationEnvelope getEnvelope() { return envelope; } public Object resultatRequeteSOAP() { // connexion au serveur try { // invoquation de la méthode sur le serveur this.connexionServeur.call(null, this.envelope); // recuperation de la réponse du serveur this.resultatRequeteSOAP = this.envelope.getResponse(); }catch (Exception aE) { aE.printStackTrace(); } return this.resultatRequeteSOAP; } public Object[] resultatRequeteSOAPTabObject() { int nbr = 0; // connexion au serveur try { // invoquation de la méthode sur le serveur this.connexionServeur.call(null, this.envelope); // recuperation de la réponse du serveur this.retour = (SoapObject) this.envelope.bodyIn; if(this.retour != null){ nbr = retour.getPropertyCount(); retourTab = new Object[nbr]; for(int i=0; i<nbr; i++){ retourTab[i] = retour.getProperty(i); } } }catch (Exception aE) { aE.printStackTrace(); } return this.retourTab; } } public Vector resultatRequeteSOAPVectorObject() { int nbr_niv_1 = 0; int nbr_niv_2 = 0; // connexion au serveur try { // invoquation de la méthode sur le serveur this.connexionServeur.call(null, this.envelope); // recuperation de la réponse du serveur this.retour = (SoapObject) this.envelope.bodyIn; if(this.retour != null){ // récupérer le nombre de return nbr_niv_1 = retour.getPropertyCount(); // exploiter le vecteur vector = new Vector(nbr_niv_1); for(int i=0; i<nbr_niv_1; i++){ // récupérer la première réponse dans un SoapObject SoapObject obj = (SoapObject) retour.getProperty(i); // récupérer le nombre d'item dans une variable nbr_niv_2 de type entier nbr_niv_2 = obj.getPropertyCount(); // tableau contenant tout les items de la réponse i Object[] item = new Object[nbr_niv_2]; for(int j=0; j<nbr_niv_2; j++){ // insérer chaque item dans un élément du tableau item[j] = obj.getProperty(j); } // ajouter le tableau d'objets dans la liste vector vector.addElement(item); } } }catch (Exception aE) { aE.printStackTrace(); } return this.vector; } /* Appel de méthode -> public ConnexionSOAP cs = new ConnexionSOAP("url_service"); v = new Vector(1); v.addElement(new Integer(1)); cs.objetSoap("nom_service", "ma_methode", v); cs.envelope(); Object[] tab = cs.resultatRequeteSOAPTabObject(); Vector v = cs.resultatRequeteSOAPVectorObject(); // ex[0] = (Object[]) v.elementAt(0); // ex[1] = (Object[]) v.elementAt(1); // ...
  • /

Conclusion :


Les ressources d'un téléphone mobile étant très limitées, il faut savoir improviser !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.