[RESOLVIDO] Envio de dados para o Banco através do WebService (KSOAP2)

6 respostas
C

Pessoal, tenho o seguinte código abaixo:

public SimpleCancellableTask getTskEnviar() {
        if (tskEnviar == null) {
            // write pre-init user code here
            tskEnviar = new SimpleCancellableTask();
            tskEnviar.setExecutable(new org.netbeans.microedition.util.Executable() {
                public void execute() throws Exception {
                    // write task-execution user code here
                    try{
                        String namespace = "http://tempuri.org/CadastrarTeste";
                        String url_ws = "http://localhost:2925/Service_Chamados.asmx";
                        String method ="CadastrarTeste";

                        SoapObject request = new SoapObject(namespace, method);

                        request.addProperty("NOM_USUR", txtNome.getString());
                        request.addProperty("TEL_USUR", txtTelefone.getString());
                        request.addProperty("ALTURA", txtAltura.getString());
                        request.addProperty("PESO", txtPeso.getString());

                        HttpTransport HttpTransport = new HttpTransport(url_ws);
                        HttpTransport.setUrl(url_ws);

                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

                        envelope.dotNet = true;
                        envelope.setOutputSoapObject(request);

                        HttpTransport.call(namespace, envelope);

                    }
                    catch(Exception e)
                    {
                        e.getMessage();
                        //e.printStackTrace();
                    }
                }
            });
            // write post-init user code here
        }
        return tskEnviar;
    }
Ele simplesmente não dá nenhum erro. Debuguei e passa por todas as linhas sem nenhuma exception. A questão é que quando eu faço um select no banco para verificar se foi inserido, não consta nada lá.

Alguem sabe o que pode estar acontecendo?

6 Respostas

C

Na verdade… ele está inserindo, mas NULO no banco.

Debugando, os valores dos textboxs são passados, mas acredito que quando passa pelo HttpTransport.call(namespace, envelope);, já vão nulos para o método do meu WebService.

E

Bom dia
Posta trecho do código do WebService pra gente tentar ajudar :slight_smile:

M
Cmcampos1986:
Pessoal, tenho o seguinte código abaixo:
public SimpleCancellableTask getTskEnviar() {
        if (tskEnviar == null) {
            // write pre-init user code here
            tskEnviar = new SimpleCancellableTask();
            tskEnviar.setExecutable(new org.netbeans.microedition.util.Executable() {
                public void execute() throws Exception {
                    // write task-execution user code here
                    try{
                        String namespace = "http://tempuri.org/CadastrarTeste";
                        String url_ws = "http://localhost:2925/Service_Chamados.asmx";
                        String method ="CadastrarTeste";

                        SoapObject request = new SoapObject(namespace, method);
             ****    SoapPrimitive resultString= null;

                        request.addProperty("NOM_USUR", txtNome.getString());
                        request.addProperty("TEL_USUR", txtTelefone.getString());
                        request.addProperty("ALTURA", txtAltura.getString());
                        request.addProperty("PESO", txtPeso.getString());

                        HttpTransport HttpTransport = new HttpTransport(url_ws);
                        HttpTransport.setUrl(url_ws);

                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

                        envelope.dotNet = true;
                        envelope.setOutputSoapObject(request);

                        HttpTransport.call(namespace, envelope);

          ***        resultString = (SoapPrimitive)envelope.getResponse();

                    }
                    catch(Exception e)
                    {
                        e.getMessage();
                        //e.printStackTrace();
                    }
                }
            });
            // write post-init user code here
        }
        return tskEnviar;
    }
Ele simplesmente não dá nenhum erro. Debuguei e passa por todas as linhas sem nenhuma exception. A questão é que quando eu faço um select no banco para verificar se foi inserido, não consta nada lá.

Alguem sabe o que pode estar acontecendo?

Amigão nas minhas chamadas eu utilizo o SoapPrimitive eu coloquei em "***"

faz esse teste

abraços

C

Opa… e ai Marcos blza?

Só para vcs entenderem, eu tenho uma tela com 4 campos e nela eu insiro as informações.
Depois eu chamo no web service um método que vai inserir no banco. Isso através de uma proc que faz um insert.

Tudo o que eu insiro nos campos, é mostrado os valores no Debug, mas depois q ele passa do HttpTransport.call(namespace, envelope);, os dados ficam nulos.

Bem estranho!

Fiz o que vc pediu cara, não deu certo.

Tá difícil de descobrir isso!

M

e ae Cmcampos1986 então no aplicativo android que estou desenvolvendo como eu to trabalhando com Bluetooth e não consigo debugar o que eu faço

A cada try{}catch(Exception) e coloco essa classe que para gravar qualquer erro num banco de dados sql e funciona tranquilo a diferença é que estou desenvolvendo com o eclipse e os valores eu estou passando como parametro.

Espero que ajude

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

public class GravaErro{

private static String DS_ERRO = null;
private static String DS_ROTINA = null;
private static final String SOAP_ACTION ="";
private static final String METHOAD_NAME = "Insere_Erro";
private static final String NAMESPACE = "";
private static final String URL ="";

public static void grava(String Erro,String Rotina){
	gravar_erro(Erro,Rotina);
}

private static void gravar_erro(String DS_Erro, String DS_Rotina)
{
	
	SoapObject Request = new SoapObject(NAMESPACE,METHOAD_NAME);

    
	Request.addProperty("Erro",DS_Erro);
    Request.addProperty("Rotina",DS_Rotina);
    
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.bodyOut = Request;
    envelope.setOutputSoapObject(Request);
    
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
    
    try
    {
		androidHttpTransport.debug = true ; 
		androidHttpTransport.call(SOAP_ACTION, envelope);
		envelope.getResponse();
     }
    catch(Exception e)
    {
       e.printStackTrace();
    }
}

}

C

Bom Marcos, descobri o mistério!

Eu estava declarando a parte dos parâmetro dessa forma:

requisicao.addProperty("NOM_USUR", _nome); // Adiciona o valor do primeiro parâmetro do web service
requisicao.addProperty("TEL_USUR", _telefone); // Adiciona o valor do segundo parâmetro do web service
requisicao.addProperty("ALTURA", _altura); // Adiciona o valor do terceiro parâmetro do web service
requisicao.addProperty("PESO", _peso); // Adiciona o valor do quarto parâmetro do web service

Masss… na minha cabeça, o primeiro parâmetro a ser passado no .addProperty era o nome da coluna da minha tabela no Banco de Dados e não o nome das variáveis que seram passadas no método do meu Web Service.

Abaixo a declaração correta:

requisicao.addProperty("nom_usur", _nome); // Adiciona o valor do primeiro parâmetro do web service
requisicao.addProperty("tel_usur", _telefone); // Adiciona o valor do segundo parâmetro do web service
requisicao.addProperty("alt_usur", _altura); // Adiciona o valor do terceiro parâmetro do web service
requisicao.addProperty("pes_usur", _peso); // Adiciona o valor do quarto parâmetro do web service

A assinatura do meu método no Web Service é essa: public string CadastrarTeste(string nom_usur, string tel_usur, string alt_usur, string pes_usur)

Bom… resolvido!
Agora ele está inserindo!

Tudo bem que foi vacilo meu e tudo foi uma questão de conceito e entendimento do addProperty.
Mas tranquilo… como estou começando a usar o J2ME a pouco tempo, é normal essas dificuldades.

Muito obrigado pela ajuda cara!

Abraço

Criado 15 de junho de 2011
Ultima resposta 16 de jun. de 2011
Respostas 6
Participantes 3