I am developing a mobile application in Android Studio consuming from a WebServices made in asmx. Only when I run my app and enter the username and password send me an error
E / Response: Error: Can not create handler inside thread that has not called Looper.prepare ()
I leave here my code that I have in my activity
package com.example.onc_lap.oncontrolmobile;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
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.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.StrictMode;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.net.URL;
import java.net.URLConnection;
public class Principal extends AppCompatActivity {
EditText usuario;
EditText password;
private Button ingresar;
private ProgressDialog pDialog;
String TAG = "Response";
public final int dialogo_alert = 0;
public String msje = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
usuario = (EditText) findViewById(R.id.usuario);
password = (EditText) findViewById(R.id.password);
ingresar = (Button) findViewById(R.id.ingresar);
ingresar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = usuario.getText().toString();
String pass = password.getText().toString();
new webserv().execute();
} //fin del click view
});
}
class webserv extends AsyncTask<String, String, String> {
public String NAMESPACE = "http://ONControl_MobileWS/";
public String METHOD_NAME = "Login";
public String SOAP_ACTION = "http://ONControl_MobileWS/Login";
public String SOAP_ADDRESS;
private SoapObject request;
private HttpTransportSE transporte;
private SoapSerializationEnvelope envelope;
@Override
protected String doInBackground(String... params) {
Login();
return null;
}
protected void onPreExecute() {
Log.i(TAG, "onPreExecute");
pDialog = new ProgressDialog(Principal.this);
pDialog.setMessage("Iniciando sesion ...");
pDialog.setIndeterminate(false);
pDialog.setMax(10);
pDialog.setCancelable(false);
pDialog.show();
}
protected void onPostExecute(boolean result) {
if (result){
Toast.makeText(Principal.this, "Tarea finalizada!",
Toast.LENGTH_SHORT).show();
}
}
public void Login(){
SOAP_ADDRESS = "http://oncontrol.no-ip.net:9020/ONControl_MobileWS.asmx";
request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi= new PropertyInfo();
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
transporte = new HttpTransportSE(SOAP_ADDRESS);
request.addProperty("usuario", usuario.getText().toString());
request.addProperty("password", password.getText().toString());
try {
transporte.call(SOAP_ACTION, envelope);
SoapPrimitive resultado_xml =(SoapPrimitive)envelope.getResponse();
String res = resultado_xml.toString();
Principal.this.msje=res;
// mostramos la respuesta en un toast
Toast.makeText(Principal.this.getBaseContext(), res,Toast.LENGTH_SHORT).show();
if(res.equals("Gracias por Iniciar Sesion")){
Principal.this.usuario.getText().toString();
Principal.this.usuario.setText("");
Principal.this.password.setText("");
//envia al otro activity
Intent intent=new Intent("android.intent.menu");
startActivity(intent);
finish();
}
} catch (Exception e) {
Log.e(TAG, "Error: " + e.getMessage());
}
}
}
//run
}