Página 1 de 1

webservice com json

Enviado: 29 Nov 2017 13:25
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 )

webservice com json

Enviado: 29 Nov 2017 13:42
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.

webservice com json

Enviado: 29 Nov 2017 13:55
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

webservice com json

Enviado: 29 Nov 2017 13:58
por JoséQuintas
O problema dele é envio, e não retorno.
E ao que parece, ele tá inventando um novo formato pra json.

webservice com json

Enviado: 29 Nov 2017 14:25
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 )

webservice com json

Enviado: 29 Nov 2017 14:27
por JoséQuintas
Olha aí que tem um exemplo de retorno em json.
Vai ser que seu envio está diferente.
https://viacep.com.br/

webservice com json

Enviado: 29 Nov 2017 14:31
por JoséQuintas
Talvez melhor mostrar:
json.png
json.png (1.49 KiB) Exibido 2114 vezes

Algo está diferente.
E pode ter mais diferenças.

webservice com json

Enviado: 29 Nov 2017 14:40
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

webservice com json

Enviado: 29 Nov 2017 14:58
por MSDN
Quintas = programador RAIZ

webservice com json

Enviado: 30 Nov 2017 15:03
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 )