Consumo de Webservice com Harbour.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

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

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

O SOAP está correto, é tudo questão do conteúdo do XML.
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
André Corrêa
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 03 Nov 2015 07:46
Localização: Caraguatatuba/SP

Consumo de Webservice com Harbour.

Mensagem por André Corrêa »

Boa tarde,

Para concluir o assunto, o envelope SOAP não estava correto.
As informações que compõe o envelope variam de servidor para servidor e no caso desse webservice,
a documentação é incompleta, pois só contempla o uso dos métodos por linguagens .NET, fazendo a importação do WSDL.
Depois de muito pesquisar, descobri que o SoapUI permite importar o WSDL e gerar o envelope SOAP para consulta.
Fica a dica para quem precisar trabalhar com algum webservice que utilize o envelope SOAP customizado.
A ferramenta é ótima e depois de instalar, basta importar o WSDL para poder visualizar todos os métodos e suas chamadas,
incluindo o envelope completo. Tem uma versão Open Source, que foi a que eu baixei e é simples de usar.
O Link para download é https://www.soapui.org/open-source.html

O formato correto do envelope é:

Código: Selecionar todos

<soap12:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://tempuri.org/">
   <soap12:Header>
      <tns:Senha>?</tns:Senha>
      <tns:Length>?</tns:Length>
      <tns:FileName>?</tns:FileName>
      <tns:Estabelecimento>?</tns:Estabelecimento>
   </soap12:Header>
   <soap12:Body>
      <tns:RemoteFileInfo>
         <tns:FileByteStream>?</tns:FileByteStream>
      </tns:RemoteFileInfo>
   </soap12:Body>
</soap12:Envelope>
E o XML final, envelopado ficou assim:

Código: Selecionar todos

<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:soap12="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://tempuri.org/"><soap12:Header><tns:Senha>159753</tns:Senha><tns:Length>2406</tns:Length><tns:FileName>C:\A\LXA13703.xml</tns:FileName><tns:Estabelecimento>9999999999</tns:Estabelecimento></soap12:Header><soap12:Body><tns:RemoteFileInfo><tns:FileByteStream><registros><cabecalho><Estabelecimento>999999999</Estabelecimento><DataInicial>27/01/17</DataInicial><DataFinal>27/01/17</DataFinal><Versao>3</Versao><Sistema/></cabecalho><registro><CodigoTipoProduto>10</CodigoTipoProduto><DescricaoTipoProduto>Mastercard Credito a Vista</DescricaoTipoProduto><CodigoAutorizacao>456546</CodigoAutorizacao><IdentificadorPagamento>114956</IdentificadorPagamento><DataVenda>27/01/17</DataVenda><DataVencimento>28/02/17</DataVencimento><ValorVendaParcela>200,00</ValorVendaParcela><ValorLiquidoParcela/><TotalVenda>438,00</TotalVenda><Taxa/><Parcela>0</Parcela><TotalDeParcelas>0</TotalDeParcelas><NSU/><TID/><MeioCaptura>1</MeioCaptura><Operadora>2</Operadora><Modalidade>1</Modalidade></registro><registro><CodigoTipoProduto>11</CodigoTipoProduto><DescricaoTipoProduto>Mastercard Maestro Debito</DescricaoTipoProduto><CodigoAutorizacao>456151</CodigoAutorizacao><IdentificadorPagamento>114956</IdentificadorPagamento><DataVenda>27/01/17</DataVenda><DataVencimento>28/01/17</DataVencimento><ValorVendaParcela>238,00</ValorVendaParcela><ValorLiquidoParcela/><TotalVenda>438,00</TotalVenda><Taxa/><Parcela>0</Parcela><TotalDeParcelas>0</TotalDeParcelas><NSU/><TID/><MeioCaptura>1</MeioCaptura><Operadora>2</Operadora><Modalidade>0</Modalidade></registro><registro><CodigoTipoProduto>10</CodigoTipoProduto><DescricaoTipoProduto>Mastercard Credito a Vista</DescricaoTipoProduto><CodigoAutorizacao>549137</CodigoAutorizacao><IdentificadorPagamento>114960</IdentificadorPagamento><DataVenda>27/01/17</DataVenda><DataVencimento>28/02/17</DataVencimento><ValorVendaParcela>200,00</ValorVendaParcela><ValorLiquidoParcela/><TotalVenda>438,00</TotalVenda><Taxa/><Parcela>0</Parcela><TotalDeParcelas>0</TotalDeParcelas><NSU/><TID/><MeioCaptura>1</MeioCaptura><Operadora>2</Operadora><Modalidade>1</Modalidade></registro><registro><CodigoTipoProduto>11</CodigoTipoProduto><DescricaoTipoProduto>Mastercard Maestro Debito</DescricaoTipoProduto><CodigoAutorizacao>698410</CodigoAutorizacao><IdentificadorPagamento>114960</IdentificadorPagamento><DataVenda>27/01/17</DataVenda><DataVencimento>28/01/17</DataVencimento><ValorVendaParcela>238,00</ValorVendaParcela><ValorLiquidoParcela/><TotalVenda>438,00</TotalVenda><Taxa/><Parcela>0</Parcela><TotalDeParcelas>0</TotalDeParcelas><NSU/><TID/><MeioCaptura>1</MeioCaptura><Operadora>2</Operadora><Modalidade>0</Modalidade></registro></registros></tns:FileByteStream></tns:RemoteFileInfo></soap12:Body></soap12:Envelope>
Obrigado a todos que tentaram ajudar.
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

Muito bom saber disso.
Já tinha visto algo parecido, mas só com ferramenta paga.
Mais um para os utilitários indispensáveis.
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Consumo de Webservice com Harbour.

Mensagem por Toledo »

JoséQuintas escreveu:Já tinha visto algo parecido, mas só com ferramenta paga.
Eu já tinha falado sobre o SOAPUI aqui no fórum:
https://pctoledo.org/forum/viewto ... 52&#p92068

Ele é muito bom, ajuda muito para ver métodos, parâmetros e modelos de xML de envio e retorno.

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

E foi ele mesmo que testei da outra vez, mas não funcionou com NFE, não deixou escolher certificado ou não encontrei aonde configurar.
Se conseguiu isso, e puder passar a dica, seria bom pra eventuais necessidades do governo.
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Consumo de Webservice com Harbour.

Mensagem por Toledo »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

Vixe... Não ia descobrir nunca.... rs
O próprio autor do texto disse que apanhou muito.
Valeu.

Ainda não testei.
Talvez tenha que criar um projeto, se entendi bem.
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

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

Não entendi nada.
Tem um vídeo no youtube mostrando

https://www.youtube.com/watch?v=a-eB6nqwOh0

até aí, tudo bem.
Mas na prática não é assim que aparece.
Não encontrei a mesma versão do vídeo 2.3, só 2.2 ou 2.5. Testei as duas.
soapui1.png
No vídeo aparece o xml inteiro, mas no uso aparece parcial.
Tô achando que é algo relacionado a esse tal binding, que em SP não existe.

Alguma dica sobre o que falta pra mostrar mais completo?

Obs. NFE 3.10 Acre
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

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

Resolvido, era o XML errado.
Quanto ao SOAPUI, vou ter que esperar algum webservice diferente.
Talvez por eu já conhecer esse envelope, mostrou o que eu já sabia e por isso não tenha visto utilidade.
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

Consumo de Webservice com Harbour.

Mensagem por JoséQuintas »

soapui2.png
De qualquer forma, ele me chamou a atenção numa coisa:

Código: Selecionar todos

      ::cXmlSoap +=       [<] + ::cProjeto + [DadosMsg xmlns="] + ::cSoapService + [">]
Eu coloco o serviço nesse xmlns=, e na SoapAction somente a última palavra.

Pelo que entendi dos XMLs, isso é igual PATH, onde podemos usar o PATH exato ou o PATH relativo ao PATH atual.
Me deu a impressão de que poderia colocar SoapAction completo, e remover a indicação acima.
Se isso der certo, dentro da classe:
- vai transformar o array duplo em array simples
- vai deixar o fonte do envelope mais limpo
- vai deixar mais fácil pra alterações futuras (NFE 4.0 e outros)

Assim que der vou fazer o teste, e neste caso, o SoapUI vai ter ajudado até mesmo no que já estava pronto.
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
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

Consumo de Webservice com Harbour.

Mensagem por Mario Mesquita »

Boa trde pessoal.

Enfim, comecei os estudos para fazer o bendito webservice. Fui no post dos Correiros e funcionou, mas não gerou os XML, resquest, response, etc.

Os exemplos aqui estão funcionando? Aí pego e adapto ao site que devo pesquisar.

Se não, se puderem me indicar um tópico que tenha algo operacional, desde já agradeço!

Sds,
Mario.
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

Consumo de Webservice com Harbour.

Mensagem por Mario Mesquita »

Olá, pessoal.

Tentei fazer rodar o exemplo do André e deu erro de compilação, no TRY/CATCH. O Harbour não suporta esse comando?

Sds,
Mario.
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Consumo de Webservice com Harbour.

Mensagem por Daniel »

Voce pode incluir a lib xhb.lib
ou colocar esta linhas

Código: Selecionar todos

#xcommand TRY              => BEGIN SEQUENCE WITH {|o| break(o)}
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
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

Consumo de Webservice com Harbour.

Mensagem por Mario Mesquita »

Boa noite.

Daniel, eu uso o Harbour. Dá pra usar a lib no xHarbour? Não seria melhor usar o BEGIN SEQUENCE no lugar do TRY/CATCH?

Sds,
Mario.
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Consumo de Webservice com Harbour.

Mensagem por Daniel »

Está lib e do harbour mesmo compatibilidade ou usar o Begin
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Responder