• advertisement_alt
  • advertisement_alt
  • advertisement_alt
Sign in to follow this  
Followers 0
mrclef

[RESOLVIDO] Retorno vazio do webservice

5 posts in this topic

Bom dia,

Estou utilizando o windev para um trabalho da faculdade. Criei um webservice local no meu pc e uma base hyperfile para um app android consumir, porem o conteudo está vindo vazio quando testo no simulador do Windev Mobile, sendo que quando testo no navegador as informações vem corretamente.

Abaixo o código que fiz para get do webservice:

ProdGet is Structure
    usuarioID    is 8-byte int
    login        is ANSI string
    senha        is ANSI string
    mercid        is ANSI string
END
arrProdlist is array of ProdGet

HReadFirst(usuario,usuarioID)
WHILE HOut() = False
    arrProdlist.Add([usuario.usuarioID,usuario.login,usuario.senha,usuario.mercid])
    HReadNext(usuario,usuarioID)
END

Rest is JSON
Rest.qtd        = ArrayCount(arrProdlist)
Rest.produtos = arrProdlist

RESULT Rest

////////////////////////////

E aqui o cógio que fiz no meu mobile para receber:

oRequest is restRequest   
oResponse is restResponse 

oRequest..URL = "http://localhost:8024/usuario"
oRequest..Method = httpGet
oResponse = RESTSend(oRequest) 

IF ErrorOccurred THEN
    ToastDisplay(ErrorInfo,toastShort,vaBottom,haCenter)
    RETURN
ELSE
    IF oResponse..StatusCode = 200 THEN
        
        sRetJSON is Buffer = oResponse..Content
        stRest is STListProd
        
        // Deserialization to the element
        Deserialize(stRest, sRetJSON, psdJSON)
    
        Info(stRest.nQand)
    
        
    ELSE
        ToastDisplay("Erro do Servidor - "+oResponse..StatusCode,toastShort,vaBottom,haCenter)
        RETURN
    END    
END

 

Alguem pode me ajudar?

 

 

Share this post


Link to post
Share on other sites

Posted (edited)

Algumas observações (leia todas antes de dedicar tempo a alguma, umas podem ser mais rápidas de testar):


1-O simulador nativo do Windev Mobile costuma gerar erros diferentes da realidade, veja se consegue compilar pra um dispositivo real (não sei como é a versão Student aí, se permite isso). Se não tiver como mandar pra um celular ou tablet reais, experimente mandar pra um simulador não nativo como o Memu, por exemplo, e veja se o erro se repete (lembrando que para a execução no Memu vc terá de referir o ip do PC de outra maneira, "localhost" será referente ao simulador, e não ao PC).

2-O que significa "o conteúdo está vindo vazio"? Quer dizer que quando vc o exibe, aparece "0"? Vc está exibindo corretamente? No navegador, o que é exibido, o dado bruto? Há alguma diferença de parâmetros que vc passa em cada caso? Experimente tentar exibir o dado de outra forma, veja o help da função JSONToVariant. Não sei se pode haver algum bug com a desserialização automática da Deserialize que vc usou, nunca testei.

3-Vc procurou algum exemplo disso que está tentando fazer? Há alguns exemplos engessados que costumam simplificar nossa vida. Vc não precisa usar o MAPPING de variáveis quando está começando, não precisa copiá-los, mas nada impede de simplificar e simular um deles pra funcionar da primeira vez, e depois brincar com ele, modificar pra ficar a seu gosto e vc entender a coisa pra poder apresentar com tranquilidade.

Se ficar perdido, procure eliminar gradativamente as regiões onde possa estar seu problema.
Talvez o pessoal mais experiente possa lhe dar alguma dica melhor.

Edited by Fábio Senji
2 people like this

Share this post


Link to post
Share on other sites
12 horas atrás, Fábio Senji disse:

Algumas observações (leia todas antes de dedicar tempo a alguma, umas podem ser mais rápidas de testar):


1-O simulador nativo do Windev Mobile costuma gerar erros diferentes da realidade, veja se consegue compilar pra um dispositivo real (não sei como é a versão Student aí, se permite isso). Se não tiver como mandar pra um celular ou tablet reais, experimente mandar pra um simulador não nativo como o Memu, por exemplo, e veja se o erro se repete (lembrando que para a execução no Memu vc terá de referir o ip do PC de outra maneira, "localhost" será referente ao simulador, e não ao PC).

2-O que significa "o conteúdo está vindo vazio"? Quer dizer que quando vc o exibe, aparece "0"? Vc está exibindo corretamente? No navegador, o que é exibido, o dado bruto? Há alguma diferença de parâmetros que vc passa em cada caso? Experimente tentar exibir o dado de outra forma, veja o help da função JSONToVariant. Não sei se pode haver algum bug com a desserialização automática da Deserialize que vc usou, nunca testei.

3-Vc procurou algum exemplo disso que está tentando fazer? Há alguns exemplos engessados que costumam simplificar nossa vida. Vc não precisa usar o MAPPING de variáveis quando está começando, não precisa copiá-los, mas nada impede de simplificar e simular um deles pra funcionar da primeira vez, e depois brincar com ele, modificar pra ficar a seu gosto e vc entender a coisa pra poder apresentar com tranquilidade.

Se ficar perdido, procure eliminar gradativamente as regiões onde possa estar seu problema.
Talvez o pessoal mais experiente possa lhe dar alguma dica melhor.

1 - Estou tentando usar o Genymotionr mas da erro, provavelmente pelo ip.  Na hora de criar a conexão no HFSQL Control Center eu usei localhost, devo refazer com outro ip?

2 - Tudo que é numérico vem 0 e string vem vazio. No teste pelo navegador vem um json contendo todas as informações de forma correta. Parâmetros são os mesmo, é só um get que retorna tudo que está na tabela.

3 - Eu vi exemplos e video aulas. Mas não encontrei muita coisa sobre webservice REST no mobile.

Vou tentar ler o json de outra forma e mudar a conexão.

Obrigado!

Share this post


Link to post
Share on other sites

Posted (edited)

13 horas atrás, mrclef disse:

1 - Estou tentando usar o Genymotionr mas da erro, provavelmente pelo ip.  Na hora de criar a conexão no HFSQL Control Center eu usei localhost, devo refazer com outro ip?

2 - Tudo que é numérico vem 0 e string vem vazio. No teste pelo navegador vem um json contendo todas as informações de forma correta. Parâmetros são os mesmo, é só um get que retorna tudo que está na tabela.

3 - Eu vi exemplos e video aulas. Mas não encontrei muita coisa sobre webservice REST no mobile.

Vou tentar ler o json de outra forma e mudar a conexão.

Obrigado!

1- Suponhamos que o ip do seu PC na rede interna seja 192.168.0.50 . Em seu pc, no navegador ou outros softwares (a exemplo o simulador nativo do windev mobile), isso é o mesmo que localhost, até onde eu sei. Já num simulador de terceiros, creio que vc deva inserir 192.168.0.50 e que localhost faça referência ao dispositivo virtual simulado ou algo assim (alguém me corrija se eu estiver erado na lógica). Vc sabe onde está seu webservice, certo?

2- Provavelmente vc está convertendo ou exibindo errado os valores recebidos, que devem estar vindo certos. Seria estranho eles virem errados somente no mobile, exceto se vc passasse parâmetros diferentes.

3- O webservice pode ser consumido em mobile ou em desktop da mesma maneira, ao que me recordo. Se jogar no google "webservice windev", já terá diversos resultados, incluindo vídeos detalhados. Ao que entendi o que vc precisa é mais simples que usualmente é explicado nas fontes online. Se ficar alguma dúvida manda aí.

Edited by Fábio Senji
2 people like this

Share this post


Link to post
Share on other sites
15 horas atrás, Fábio Senji disse:

1- Suponhamos que o ip do seu PC na rede interna seja 192.168.0.50 . Em seu pc, no navegador ou outros softwares (a exemplo o simulador nativo do windev mobile), isso é o mesmo que localhost, até onde eu sei. Já num simulador de terceiros, creio que vc deva inserir 192.168.0.50 e que localhost faça referência ao dispositivo virtual simulado ou algo assim (alguém me corrija se eu estiver erado na lógica). Vc sabe onde está seu webservice, certo?

2- Provavelmente vc está convertendo ou exibindo errado os valores recebidos, que devem estar vindo certos. Seria estranho eles virem errados somente no mobile, exceto se vc passasse parâmetros diferentes.

3- O webservice pode ser consumido em mobile ou em desktop da mesma maneira, ao que me recordo. Se jogar no google "webservice windev", já terá diversos resultados, incluindo vídeos detalhados. Ao que entendi o que vc precisa é mais simples que usualmente é explicado nas fontes online. Se ficar alguma dúvida manda aí.

Resolvi o problema! Faltou serializar os dados antes de enviar... :|

Obrigado pela ajuda.

4 people like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0