Página 2 de 2

Ajuda com webservice

Enviado: 21 Out 2015 16:52
por Toledo
luiz antonio da silva escreveu:tá dando erro 1005 no exported variable ASYNC
Siga a orientação do José Quintas na mensagem postada acima, em 21 Out 2015 09:11.

Abraços,

Ajuda com webservice

Enviado: 21 Out 2015 16:58
por luiz antonio da silva
blz Toledo, já tinha acertado para continuar os testes, agora só tá dando o erro do post acima....not exported variable ASYNC.

Grato.
Luiz.

Ajuda com webservice

Enviado: 21 Out 2015 18:57
por Toledo
luiz antonio da silva escreveu:variable ASYNC
Amigo, leia novamente a mensagem postada pelo José Quintas, pois conforme ele disse, não é obrigatório as linhas 22 até 30 do código que passei, então a linha onde tem o ASYNC não seria necessária.

Abraços,

Ajuda com webservice

Enviado: 21 Out 2015 21:32
por luiz antonio da silva
Boa noite Toledo e JoséQuintas !

Agradeço imensamente a ajuda, o próximo passo agora é entender o que o programa faz e descobrir porque o retorno vem sem informações.

Obrigado mesmo.

Abraço.
Luiz.

Ajuda com webservice

Enviado: 22 Out 2015 09:38
por luiz antonio da silva
Bom dia !

Obrigado novamente Toledo e JoséQuintas, funcionou 100% com o código e as dicas passadas.


Abraço.
Luiz.

Ajuda com webservice

Enviado: 24 Ago 2016 14:23
por wesley assis
Pessoal, boa tarde!

Eu geralmente, tento, quebro a cabeça e muitas das vezes consigo resolver os problemas com a ajuda que os amigos postam, mas dessa vez não consegui sair do "chão". Já fiz programação com Web Service com url simples, onde nela ia o caminho acrescido de usuário e senha, e era retornado um xml com os dados.
É o seguinte me passaram uma tarefa e a mais de suas semanas não saio do lugar. com essa url --> https://www.econsig.com.br/central/serv ... rvice?wsdl
queria ao menos enviar um envelope CONSULTARMARGEM, que está contido nela e obter o retorno.
Tenho alguns campos obrigatórios que passaram como teste para homologação.
Cliente = VIVER
Convênio = VIVER-BELOHORIZONTE
Usuário = viver_xml
Senha Usuário = viv12345

CPF para teste = 677.673.871-86 (tem que colocar com essa máscara, com ponto e hífen)
Matricula para teste = 1000045

Teste no programa SOAPUI e deu certinho, retornou com a MARGEM e nome da pessoa, mas no HMG 3.30 que estou usando não consigo sair do lugar.
Será que podem me ajudar?

Ajuda com webservice

Enviado: 26 Ago 2016 16:26
por wesley assis
Pessoal, boa tarde!

Consegui o mesmo retorno do SOAPUI, seguindo o exemplo que o Toledo postou, portanto vou fazer mais uns testes e dando certo posto como foi.

Obrigado.

Wesley Assis

Ajuda com webservice

Enviado: 26 Ago 2016 19:11
por fladimir
q bom...

Agradecemos

Ajuda com webservice

Enviado: 29 Ago 2016 11:50
por wesley assis
Deu certo.
Segue o código. Criei um xml interno, com o CPF, matricula, etc., para testar.
Para rodar com outros CPFs, basta criar variáveis substituindo os campos obrigatórios e enviar e obter o retorno.

Código: Selecionar todos

/************************************************
* Compilar: hbmk2 soap.prg -lhbwin -lxhb
************************************************/
#include "hbcompat.ch"
#include "hbxml.ch"
#include "hbmxml.ch"

function main()
local cXml, cSoapAction, cWebservice, cOperation, cRetorno
cls
cWebservice := "https://www.econsig.com.br/central_homologa/services/HostaHostService/?wsdl"
cSoapAction := "urn:consultarMargem"
cOperation  := "consultarMargem"

cXml        := '<?xml version="1.0" encoding="utf-8"?>'+hb_eol()+;
               '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hos="HostaHostService">'+hb_eol()+;
               '<soapenv:Header/>'+hb_eol()+;
               '<soapenv:Body>'+hb_eol()+;
               '<hos:consultarMargem>'+hb_eol()+;
               '<hos:cliente>VIVER</hos:cliente>'+hb_eol()+;
               '<hos:convenio>VIVER-BELOHORIZONTE</hos:convenio>'+hb_eol()+;
               '<hos:usuario>viver_xml</hos:usuario>'+hb_eol()+;
               '<hos:senha>viv12345</hos:senha>'+hb_eol()+;
               '<hos:matricula>1000045</hos:matricula>'+hb_eol()+;
               '<hos:cpf>677.673.871-86</hos:cpf>'+hb_eol()+;
               '<hos:orgaoCodigo></hos:orgaoCodigo>'+hb_eol()+;
               '<hos:estabelecimentoCodigo></hos:estabelecimentoCodigo>'+hb_eol()+;
               '<hos:valorParcela>10</hos:valorParcela>'+hb_eol()+;
               '<hos:senhaServidor></hos:senhaServidor>'+hb_eol()+;
               '<hos:tokenAutServidor></hos:tokenAutServidor>'+hb_eol()+;
               '<hos:loginServidor></hos:loginServidor>'+hb_eol()+;
               '<hos:codVerba></hos:codVerba>'+hb_eol()+;
               '<hos:servicoCodigo></hos:servicoCodigo>'+hb_eol()+;
               '<hos:matriculaMultipla></hos:matriculaMultipla>'+hb_eol()+;
               '</hos:consultarMargem>'+hb_eol()+;
               '</soapenv:Body>'+hb_eol()+;
               '</soapenv:Envelope>'

*--
oXML := TXMLDocument():New( cXml, HBXML_STYLE_NOESCAPE )
IF oXML:nError != HBXML_ERROR_NONE
   alert( "xml com problema " + Str( oXML:nError ) )
   RETURN
ENDIF

*--
cRetorno := MicrosoftXmlSoapPost( cXml, cSoapAction, cWebservice )
*--
HB_MemoWrit('retorno.xml',cRetorno)
? cRetorno
RETURN


*------------------------------------------------------
*------------------------------------------------------
FUNCTION MicrosoftXmlSoapPost( cXmlSoap, cSoapAction, cWebService )
LOCAL oServer, oDOMDoc, nCont, cRetorno := "*ERRO*", cXmlRetorno := ""

   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
   oServer:Open( "POST", cWebService, .F. )
   oServer:SetRequestHeader( "SOAPAction", cSoapAction )
   oServer:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" )

   oDOMDoc = Win_oleCREATEOBJECT("MSXML2.DOMDocument.5.0")
   oDOMDoc:async = .F.
   oDOMDoc:validateOnParse  = .T.
   oDOMDoc:resolveExternals := .F.
   oDOMDoc:preserveWhiteSpace = .T.
   oDOMDoc:LoadXML(cXmlSoap)
   IF oDOMDoc:parseError:errorCode <> 0
     ? 'Erro: xML nao carregado'
     RETURN Nil
   ENDIF

   TRY
     oServer:send(oDOMDoc:xml)
   CATCH oError
     ? 'Falha no envio do xML'
     RETURN Nil
   END
   DO WHILE oServer:readyState <> 4
     HB_milliseconds(500)
   ENDDO
   cRetorno := oServer:responseText

IF ValType( cRetorno ) == "C"
   cXmlRetorno := cRetorno
ELSEIF cRetorno == NIL
   cXmlRetorno := "*ERRO*"
ELSE
   cXmlRetorno := ""
   FOR nCont = 1 TO Len( cRetorno )
     cXmlRetorno += Chr( cRetorno[ nCont ] )
   NEXT
ENDIF
RETURN cXmlRetorno


Ajuda com webservice

Enviado: 26 Out 2016 09:25
por Mario Mesquita
Pessoal, bom dia.

Sou ceguinho nesse tema webservice e vou precisar fazer algo nesse sentido.

O HMG ou o Harbour faz isso, pelo jeito né?

Alguma literatura ou tutorial que possa me dar uma luz nesse sentido?

Fui pego de surpresa com isso e confesso que fiquei meio em pãnico...

Desde já agradeço qualquer orientação.

Saudações,
Mario.