código TareaWSConsulta en Android
código TareaWSConsulta en Android
código TareaWSConsulta en Android
AsyncTask. Su objetivo es conectar con un servicio web SOAP para obtener una lista de
clientes, procesarla y actualizar una interfaz gráfica. A continuación, se explica paso a
paso y línea por línea.
1. Definición de la clase
java
Copiar código
private class TareaWSConsulta extends AsyncTask<String, Integer,
Boolean> {
2. Variable listaClientes
java
Copiar código
private Cliente[] listaClientes;
• Arreglo de objetos Cliente para almacenar los datos que se obtendrán del
servicio web. Cada cliente tendrá las propiedades id, nombre y telefono.
3. Método doInBackground
java
Copiar código
protected Boolean doInBackground(String... params) {
java
Copiar código
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
java
Copiar código
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
• SoapSerializationEnvelope:
o Se crea un "sobre" SOAP compatible con la versión 1.1
(SoapEnvelope.VER11).
o dotNet = true: Indica que el servicio web es de tecnología .NET.
o setOutputSoapObject(request): Asigna la solicitud request al sobre
SOAP.
java
Copiar código
HttpTransportSE transporte = new HttpTransportSE(URL);
• HttpTransportSE: Clase que envía la solicitud SOAP al servidor mediante el
protocolo HTTP.
• Recibe como parámetro la URL del servicio.
java
Copiar código
try {
transporte.call(SOAP_ACTION, envelope);
SoapObject resSoap = (SoapObject) envelope.getResponse();
• transporte.call(...):
o Envía la solicitud al servidor.
o SOAP_ACTION: Especifica la acción SOAP.
o envelope: Contiene la solicitud y luego recibirá la respuesta.
• envelope.getResponse():
o Recupera la respuesta del servicio web, que se espera sea un objeto
SoapObject.
f) Procesamiento de la respuesta
java
Copiar código
listaClientes = new Cliente[resSoap.getPropertyCount()];
for (int i = 0; i < listaClientes.length; i++) {
SoapObject ic = (SoapObject) resSoap.getProperty(i);
Cliente cli = new Cliente();
cli.id = Integer.parseInt(ic.getProperty(0).toString());
cli.nombre = ic.getProperty(1).toString();
cli.telefono = Integer.parseInt(ic.getProperty(2).toString());
listaClientes[i] = cli;
}
• resSoap.getPropertyCount():
o Obtiene el número de clientes devueltos por el servicio.
o Crea un arreglo listaClientes con esa cantidad de elementos.
• Iteración:
o Recorre cada cliente en la respuesta.
o Cada cliente (ic) es convertido en un objeto SoapObject.
o Se asignan los valores a un objeto Cliente:
▪ getProperty(0): ID del cliente.
▪ getProperty(1): Nombre del cliente.
▪ getProperty(2): Teléfono del cliente.
o El objeto Cliente se guarda en el arreglo listaClientes.
g) Manejo de excepciones
java
Copiar código
} catch (Exception e) {
resul = false;
}
4. Método onPostExecute
java
Copiar código
protected void onPostExecute(Boolean result) {
java
Copiar código
if (result) {
final String[] datos = new String[listaClientes.length];
for (int i = 0; i < listaClientes.length; i++)
datos[i] = listaClientes[i].nombre;
lstClientes.setAdapter(adaptador);
}
• datos:
o Se crea un arreglo de cadenas para almacenar los nombres de los
clientes.
o Se llena con los nombres del arreglo listaClientes.
• ArrayAdapter:
o Conecta los datos al componente visual (un ListView).
o simple_list_item_1: Diseño simple para cada elemento de la lista.
• lstClientes.setAdapter(adaptador):
o Asocia el adaptador al ListView para mostrar los datos.
1. doInBackground:
o Se conecta al servicio SOAP.
o Obtiene y procesa la lista de clientes.
2. onPostExecute:
o Si el proceso fue exitoso, actualiza el ListView con los nombres de los
clientes.
o Si falló, muestra un mensaje de error en pantalla.