You need to use asynctask to work with web service calls,
package com.example.ejemplosoap;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
//Napespace definido en el servicio web
private final String namespace = "http://ws.webapp.org/";
//Fichero de definicion del servicio web
private final String url = "http://10.0.2.2:8080/WebServiceServer/services/Hello";
//namespace + metodo
private final String accionSoap = "http://ws.webapp.org/sayHello";
//Metodo que queremos ejecutar en el servicio web
private final String Metodo = "sayHello";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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;
}
public void onClickLogin(View view){
new ServiceCallTask().execute();
}
class ServiceCallTask extends AsyncTask<String, String, String>
{
@Override
protected String doInBackground(String... params) {
try {
System.out.println("1");
// Modelo el request
SoapObject request = new SoapObject(namespace, Metodo);
//request.addProperty("name", "Juan!"); // Paso parametros al WS
PropertyInfo primerParametro = new PropertyInfo ();
System.out.println("2");
primerParametro.setName("name");
primerParametro.setValue("Juan");
request.addProperty(primerParametro);
System.out.println("3");
// Modelo el Sobre
SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//si esta hecho o no en puntoNet
sobre.dotNet = false;
sobre.setOutputSoapObject(request);
System.out.println("4");
// Modelo el transporte
HttpTransportSE transporte = new HttpTransportSE(url);
System.out.println("5");
// Llamada
transporte.call(accionSoap, sobre);
System.out.println("6");
// Resultado
// SoapPrimitive resultado = (SoapPrimitive) sobre.getResponse();
String cadenaDevuelta =(String) sobre.getResponse();
Log.i("Resultado", cadenaDevuelta);
} catch (Exception e) {
Log.e("MainActivity", "ERROR");
e.printStackTrace();
}
return null;
}
}
}
Refer this to learn more about asynctask http://developer.android.com/reference/android/os/AsyncTask.html