Scarichiamo il jar relativo qui , importiamolo nel nostro progetto e aggiungiamo le referenze nella nostra classe:
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
Supponendo di avere un webservice con una pagina "Service1.asmx" la quale contiene questo metodo:
Lato Android io effettuo la chiamata al metodo HelloWorld così:[WebMethod] public string HelloWorld(string valore) { return valore; }
//Definisco le costanti utili alla configurazione degli oggetti ksoap2.private static final StringNAMESPACE= "http://tempuri.org/"; private static final StringMETHOD_NAME= "HelloWorld";//Se si vuole fare dei WS fatti in casa è possibile utilizzare dei servizi di redirect//gratuiti come No-IP. "aliascelto.zapto.org" rimanderà grazie al client No-IP al mio Ip pubblico.//Se abbiamo un router, bisognerà ricordarsi di aprire le porte da noi utilizzate//(vedi anche firewall di Windows). --> http://www.no-ip.comprivate static final StringURL= "http://aliasscelto.zapto.org/Service1.asmx"; final StringSOAP_ACTION= "http://tempuri.org/HelloWorld";//RichiestaSoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);request.addProperty("valore", s);//valore non è altro che il nostro parametro d'ingressoSoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true;//opzionaleenvelope.setOutputSoapObject(request);//ChiamataHttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.call(SOAP_ACTION, envelope);//RispostaSoapPrimitive result = (SoapPrimitive)envelope.getResponse(); String r= result.toString();
Lo stesso identico codice è possibile riutilizzarlo per WS in WCF, cambierebbe solo la costante URL.
Ovviamente questo è un metodo e una soluzione, a voi la scelta :)

No comments:
Post a Comment