webservice com json

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

webservice com json

Mensagem por Wanderlei »

Boa Tarde Pessoal,
Preciso usar o webservice com o json no Method POST e não estou tendo sucesso, alguem do forum já fez isso?

Exemplo de como estou usando:

METHOD New() CLASS TFIGGY
********************************************************************************

::cAcesso := 'bd6101cdc209a1b5'
::cURL := 'http://figgy.com.br/ws/datarey'
::cConsulta := 'http://www.figgy.com.br/getDataTypeTest?code=' + ::cAcesso
::aRetorno := Hash()

RETURN( SELF )

METHOD enviaProdutos() CLASS TFIGGY
********************************************************************************
Local cParm := '', aRetorno, oServer, nRetorno := 0

cParm :='[{"cliente_id":'+alltrim(::cAcesso)+','+;
'"cliente_nome":"Farmácia 1",'+;
'"reg_ean":"2569875412356",'+;
'"reg_ms":"1130009950013",'+;
'"nome_comercial":"AAS",'+;
'"apresentacao":"100 MG COM CT BL AL PLAS INC X 30",'+;
'"forma_farmaceutica":"COMPRIMIDO SIMPLES",'+;
'"laboratorio":"SANOFI-AVENTIS FARMACÊUTICA LTDA",'+;
'"tipo_produto":"Referência",'+;
'"princ_ativo":"ACIDO ACETILSALICILICO",'+;
'"preco_promocao":3.45,'+;
'"preco_regular":4.55,'+;
'"qtde_estoque":4,'+;
'"data_cadastro":"19/04/2016 15:45:12",'+;
'"data_atualizacao":"21/04/2016 08:45:22"},'+;
'{"cliente_id":'+alltrim(::cAcesso)+','+;
'"cliente_nome":"Farmácia 1",'+;
'"reg_ean":"2487878759456",'+;
'"reg_ms":"1036701660011",'+;
'"nome_comercial":"MICARDIS ANLO",'+;
'"apresentacao":"40MG + 5MG COM CT BL AL/AL X 10 ",'+;
'"forma_farmaceutica":"COMPRIMIDO SIMPLES",'+;
'"laboratorio":"BOEHRINGER INGELHEIM PHARMA GMBH",'+;
'"tipo_produto":"Referência",'+;
'"princ_ativo":"TELMISARTANA BESILATO DE ANLODIPINO",'+;
'"preco_promocao":72.00,'+;
'"preco_regular":89.00,'+;
'"qtde_estoque":5,'+;
'"data_cadastro":"18/03/2016 17:45:22",'+;
'"data_atualizacao":"15/07/2016 10:42:02"}]'

oServer:=CreateObject( "MSXML2.ServerXMLHTTP")
oServer:Open( "POST", alltrim(::cUrl) , .f. )
oServer:setRequestHeader( "Content-Type", "application/json" )
oServer:setRequestHeader( "CharSet", "utf-8" )
oServer:send( cParm )
cRetorno := oServer:ResponseBody

Msginfo(cRetorno,'cRetorno')

return( aRetorno )
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice com json

Mensagem por JoséQuintas »

Não.
Mas se eu fosse fazer, com certeza iria começar por uma consulta que retorne formato json.
Com base no retorno, faria o envio.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

webservice com json

Mensagem por asimoes »

Tenta pelo meu exemplo:

Código: Selecionar todos

cRetorno  := :responseBody
aResposta := {}
nLen := hb_jsondecode( cRetorno, @aResposta )
If ValType(aResposta) = "H"
   If Len(aResposta) != 0
      aRetorno := { aResposta["numCda"],;
                    aResposta["codErro"],;
                    aResposta["dataInscricao"] }   
   Endif
Endif
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice com json

Mensagem por JoséQuintas »

O problema dele é envio, e não retorno.
E ao que parece, ele tá inventando um novo formato pra json.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

webservice com json

Mensagem por Wanderlei »

Oi Zé, eu faço a consulta para saber que tipo de arquivo devo enviar, o problema mesmo é o envio o POST.

Consulta:
METHOD enviaConsulta() CLASS TFIGGY
********************************************************************************
Local oServer, cRetorno := ''

oServer:=CreateObject( "MSXML2.ServerXMLHTTP")
oServer:Open( "GET", ::cConsulta , .f. )
oServer:setRequestHeader("Content-Type", "application/json; charset=utf-8")
oServer:Send()
cRetorno:=alltrim(upper(oServer:ResponseText))

return( cRetorno )


METHOD New() CLASS TFIGGY
********************************************************************************
::cAcesso := 'bd6101cdc209a1b5'
::cURL := 'http://figgy.com.br/ws/datarey'
::cConsulta := 'http://www.figgy.com.br/getDataTypeTest?code=' + ::cAcesso
::aRetorno := Hash()

RETURN( SELF )
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice com json

Mensagem por JoséQuintas »

Olha aí que tem um exemplo de retorno em json.
Vai ser que seu envio está diferente.
https://viacep.com.br/
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice com json

Mensagem por JoséQuintas »

Talvez melhor mostrar:
json.png
json.png (1.49 KiB) Exibido 2111 vezes

Algo está diferente.
E pode ter mais diferenças.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice com json

Mensagem por JoséQuintas »

Aproveitando....

É o que falo sobre programação: aprender o básico e ficar forte no básico.
O resto vém depois.

Isso vale pra programação, pra BAT, pra XML, pra webservice, pra JSON, pra LIB gráfica.....
Pode não resolver os problemas, mas ajuda muuuito.
Porque no final... tudo acaba sendo feito a partir do básico....

E o que não existir no básico, a gente cria..... mesmo descobrindo depois que já existe pronto... rs

Então o básico de json é.... pegar um modelo pronto pra servir de exemplo.
json.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

webservice com json

Mensagem por MSDN »

Quintas = programador RAIZ
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

webservice com json

Mensagem por asimoes »

Para gerar o arquivo JSON

Código: Selecionar todos

   hTable := { => }
   FOR I:=1 TO 5
      hRecord := { => }
      hb_HSet( hRecord, "CODIGO",     StrZero(i, 5) )
      hb_HSet( hRecord, "NOME",       "ALEXANDRE" )
      hb_HSet( hTable, hb_NtoS( I ), hRecord )
   NEXT
   hb_MemoWrit( "NEW.JSON", hb_jsonEncode( hTable, .T. ) )
Para ler:

Código: Selecionar todos

hb_jsondecode( hb_MemoRead( "new.json" ), @hTable )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder