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

Pessoal, tenho o seguinte código abaixo:

[code]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;
}[/code]

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?

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.

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

[quote=Cmcampos1986]Pessoal, tenho o seguinte código abaixo:

[code]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;
}[/code]

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?[/quote]

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

faz esse teste

abraços

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!

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();
    }
}

}

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