I need to finish an application that I'm doing in Android, in the login step I'm doing, and for that, I have two webservices to do it, one is the Identifier and the second is LoginSamba.
I would like to make it explicit that:
- You will only proceed to the LoginSamba , if the LocationId is correct
- LoginSamba should be obligatorily done only after Validation of StoreIdentifier
- If fails , you will acknowledge the error (which is not happening ..: /)
The complete code for how it is is located here:
package com.testes.infovendas;
//Imports
import android.support.v7.app.ActionBarActivity;
import android.os.AsyncTask;
import android.os.Bundle;
//KSOAP2 -- Lib de conexão Webservice SOAP
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;
//Adicionais
import com.testes.infovendas.R;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class InfoVendas extends ActionBarActivity {
//Variáveis
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://www.dominio.com.br/servicos/ws.asmx";
private final String SOAP_ACTION = "http://tempuri.org/ObterIdentificadorLoja";
private static final String SOAP_ACTION2 = "http://tempuri.org/LoginSamba";
private final String METHOD_NAME = "ObterIdentificadorLoja";
private final String METHOD_NAME = "LoginSamba";
private String TAG = "ASSYNC";
private static String cnpj_cpf_codclie, codloja, seguranca, identificadorloja;
Button b;
TextView tv;
EditText et1,et2,et3,et4;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//Identificando cada campo e função
et1 = (EditText) findViewById(R.id.editCodloja);
et2 = (EditText) findViewById(R.id.editCPF);
et3 = (EditText) findViewById(R.id.editUser);
et4 = (EditText) findViewById(R.id.editPass);
tv = (TextView) findViewById(R.id.login_informa);
b = (Button) findViewById(R.id.btnEnviar);
//Listener para quando clicar no botão Enviar
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Se todos os campos forem preenchidos, será retomado o login
if (et1.getText().length() != 0 && et1.getText().toString() != "" ||
et2.getText().length() != 0 && et2.getText().toString() != "" ||
et3.getText().length() != 0 && et3.getText().toString() != "" ||
et4.getText().length() != 0 && et4.getText().toString() != "") {
//Pega todas as informações escritas nos campos e adiciona em suas respectivas variáveis para uso do WS
codloja = et1.getText().toString();
cnpj_cpf_codclie = et2.getText().toString();
seguranca = "chavesecreta";
AsyncCallWS task = new AsyncCallWS();
task.execute();
}
//Se não for preenchido todos os campos, será retornado um TextView apenas informado para informar corretamente
else {
tv.setText("Por favor, insira todos os dados.");
}
}
});
}
// Classe AsyncIdentificador
private class AsyncIdentificador extends AsyncTask<String, Void, Void> {
// Retorna como null o valor do Identificador
// Mensagem ao clicar no botão Enviar
@Override
protected void onPreExecute() {
Log.i(TAG, "onPreExecute");
tv.setText("Estabelecendo conexão ao servidor...");
tv.setText("Estabelecendo conexão ao servidor..");
tv.setText("Estabelecendo conexão ao servidor...");
}
@Override
protected Void doInBackground(String... params) {
Log.i(TAG, "doInBackground");
getIdentificador(cnpj_cpf_codclie, codloja, seguranca);
return null;
}
// Mensagem e ação pós conclusão
@Override
protected void onPostExecute(Void result) {
Log.i(TAG, "onPostExecute");
tv.setText("Conexão estabelecida com sucesso. \nRealizando o login...");
}
@Override
protected void onProgressUpdate(Void... values) {
Log.i(TAG, "onProgressUpdate");
}
}
// Classe AsyncLogin
private class AsyncLogin extends AsyncTask<String, Void, Void> {
// Retorna como null o valor do Identificador
@Override
protected Void doInBackground(String... params) {
Log.i(TAG2, "doInBackground");
logarSambaNet(identificadorloja, nome, senha, seguranca);
return null;
}
// Mensagem e ação pós conclusão
@Override
protected void onPostExecute(Void result) {
Log.i(TAG2, "onPostExecute");
tv.setText("Login efetuado com sucesso");
}
// Mensagem ao clicar no botão Enviar
@Override
protected void onPreExecute() {
Log.i(TAG2, "onPreExecute");
tv.setText("Autenticando dados..");
tv.setText("Autenticando dados...");
tv.setText("Autenticando dados....");
}
@Override
protected void onProgressUpdate(Void... values) {
Log.i(TAG2, "onProgressUpdate");
}
}
// Classe para obter os dados do Identificador
public void getIdentificador(String cnpj_cpf_codclie, String codloja,
String seguranca) {
// Cria o request
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
piCodLoja = new PropertyInfo();
piCodLoja.setName("codloja");
piCodLoja.setValue(et1.getText().toString());
piCodLoja.setType(String.class);
request.addProperty(piCodLoja);
piCPF = new PropertyInfo();
piCPF.setName("cnpj_cpf_codclie");
piCPF.setValue(et2.getText().toString());
piCPF.setType(String.class);
request.addProperty(piCPF);
piSecret = new PropertyInfo();
piSecret.setName("seguranca");
piSecret.setValue("Secret");
piSecret.setType(String.class);
request.addProperty(piSecret);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
// Seta a saída do objeto SOAP
envelope.setOutputSoapObject(request);
// Cria a chamada do objeto HTTP
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
// Invoca o Web Service
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the response
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
// Define identificadorloja como uma variável estática
identificadorloja = response.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
// Classe para logar no samba.Net
public void logarSambaNet(String identificadorloja, String nome,
String senha, String seguranca) {
// Cria o request
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME2);
piNome = new PropertyInfo();
piNome.setName("nome");
piNome.setValue(et3.getText().toString());
piNome.setType(String.class);
request.addProperty(piNome);
piSenha = new PropertyInfo();
piSenha.setName("senha");
piSenha.setValue(et4.getText().toString());
piSenha.setType(String.class);
request.addProperty(piSenha);
piIdentificador = new PropertyInfo();
piIdentificador.setName("identificadorloja");
piIdentificador.setValue(identificadorloja.toString());
piIdentificador.setType(String.class);
request.addProperty(piIdentificador);
piSecret = new PropertyInfo();
piSecret.setName("seguranca");
piSecret.setValue("Secret");
piSecret.setType(String.class);
request.addProperty(piSecret);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
// Seta a saída do objeto SOAP
envelope.setOutputSoapObject(request);
// Cria a chamada do objeto HTTP
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
// Invoca o Web Service
androidHttpTransport.call(SOAP_ACTION2, envelope);
// Get the response
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
// Define identificadorloja como uma variável estática
LoginSamba = response.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
}
If possible, give me suggestions as well, I'm getting started .. Thank you!