MainActivity.java
package com.example.ki11z0n3.clientes;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import net.sgoliver.android.soap.R;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class MainActivity extends Activity {
private TextView txtResultado;
private Button btnConsultar;
private ListView lstClientes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtResultado = (TextView)findViewById(R.id.txtResultado);
btnConsultar = (Button)findViewById(R.id.btnConsultar);
lstClientes = (ListView)findViewById(R.id.lstClientes);
btnConsultar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TareaWSConsulta tarea = new TareaWSConsulta();
tarea.execute();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//Tarea Asíncrona para llamar al WS de consulta en segundo plano
private class TareaWSConsulta extends AsyncTask<String,Integer,Boolean> {
private Cliente[] listaClientes;
protected Boolean doInBackground(String... params) {
boolean resul = true;
String NAMESPACE = "http://datagram.es/";
String URL="http://develop.datagram.es/wsDTG/Service.asmx";
String METHOD_NAME = "getClientes";
String SOAP_ACTION = "http://datagram.es/getClientes";
String token = "VqE9OGko-l-9IKS7oToJxR<>";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("_token", token);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE transporte = new HttpTransportSE(URL);
try
{
transporte.call(SOAP_ACTION, envelope);
SoapObject resSoap =(SoapObject)envelope.bodyIn;
Cliente[] 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();
listaClientes[i] = cli;
}
}
catch (Exception e)
{
resul = false;
}
return resul;
}
protected void onPostExecute(Boolean result) {
if (result)
{
//Rellenamos la lista con los nombres de los clientes
final String[] datos = new String[listaClientes.length];
for(int i=0; i<listaClientes.length; i++)
datos[i] = listaClientes[i].nombre;
ArrayAdapter<String> adaptador =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, datos);
lstClientes.setAdapter(adaptador);
}
else
{
txtResultado.setText("Error!");
}
}
}
}