KSOAP2 Web Service Android

Consumir un Web Service NuSOAP en Android usando KSOAP2

Anteriormente aprendimos a crear un Web Service NuSOAP en PHP, en este tutorial veremos cómo consumir un Web Service NuSOAP en Android usando KSOAP2. Para realizar esta tarea es muy importante leer el anterior tutorial ya mencionado.

Ya hemos visto que NuSOAP sirve para crear un Web Service en PHP, ahora para crear nuestro cliente vamos a utilizar la librería para android llamada KSOAP2. Esta misma se la pueden descargar desde el sitio: https://oss.sonatype.org/content/repositories/ksoap2-android-releases/com/google/code/ksoap2-android/ksoap2-android-assembly/3.5.0/ksoap2-android-assembly-3.5.0-jar-with-dependencies.jar.
Una vez que descargamos el JAR lo debemos incluir en la carpeta libs de nuestro proyecto y agregarlo como dependencia haciendo click derecho en el proyecto -> Properties -> Java Build Path -> Add JARs.

¿Cómo consumir un Web Service NuSOAP en Android?

El primer paso que vamos a realizar en nuestra aplicación es agregar el permiso para poder conectar a internet:

<uses-permission android:name="android.permission.INTERNET" />

Luego de realizar esto podemos empezar a programar. En este caso vamos a crear una clase llamada ClienteWS, la cual va a ejecutar la función saludar (de nuestro Web Service) con un parámetro (nombre) y recibirá una respuesta:


import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;

public class ClienteWS extends AsyncTask<String, Integer, String> {

	private Context context;
	
	private static final String SOAP_ACTION = "SaludoXMLwsdl#Saludar";
	private static final String OPERATION_NAME = "Saludar";
	private static final String WSDL_TARGET_NAMESPACE = "SaludoXMLwsdl";
	public static final String SOAP_ADDRESS = "http://midominio.com/path/to/servicio.php";

	public ClienteWS(Context context) {
		this.context = context;
	}

	@Override
	protected String doInBackground(String... params) {

		String result = null;

		SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
				OPERATION_NAME);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER10);

		// Con esta opción indicamos que el web service no es .net
		envelope.dotNet = false;

		envelope.setOutputSoapObject(request);

		HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        
		// Enviando un parámetro al web service
		request.addProperty("nombre", params[0]);

		try {
			
			// Enviando la petición al web service
			httpTransport.call(SOAP_ACTION, envelope);

			// Recibiendo una respuesta del web service
			SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope
					.getResponse();

			result = resultsRequestSOAP.toString();

			httpTransport.getServiceConnection().disconnect();
		} catch (IOException | XmlPullParserException e) {
			Log.v("Error", e.getMessage());
			result = e.getMessage();
		}

		return result;
	}

	@Override
	protected void onPostExecute(String result) {
		// Mostramos la respuesta del web service
		Toast.makeText(context, result, Toast.LENGTH_LONG).show();
	}

}

Luego para probar este cliente solamente tenemos que ejecutar el siguiente código en nuestra Activity:

new ClienteWS(this).execute("ProgramaciónExtrema.com");

Eso es todo por hoy, espero que les sea de gran utilidad. Ante cualquier problema no duden en dejar un comentario.

Compartilo en
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestEmail this to someone

AboutJosé Di Meglio

Apasionado de la tecnología y programación. Aportando información gratuita sobre el mundo de la informática.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *