Ajuda com webservice

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Ajuda com webservice

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Ajuda com webservice

Mensagem 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.
HMG 3.4.4 - SQL SERVER - ORACLE
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Ajuda com webservice

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Ajuda com webservice

Mensagem 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.
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Ajuda com webservice

Mensagem 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.
HMG 3.4.4 - SQL SERVER - ORACLE
wesley assis
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 08 Abr 2010 16:16
Localização: Belo Horizonte - MG

Ajuda com webservice

Mensagem 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?
wesley assis
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 08 Abr 2010 16:16
Localização: Belo Horizonte - MG

Ajuda com webservice

Mensagem 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
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Ajuda com webservice

Mensagem por fladimir »

q bom...

Agradecemos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
wesley assis
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 08 Abr 2010 16:16
Localização: Belo Horizonte - MG

Ajuda com webservice

Mensagem 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

Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Ajuda com webservice

Mensagem 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.
Responder