Página 2 de 3

Consumo de Webservice com Harbour.

Enviado: 16 Mai 2017 20:27
por JoséQuintas
O SOAP está correto, é tudo questão do conteúdo do XML.

Consumo de Webservice com Harbour.

Enviado: 17 Mai 2017 16:19
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.

Consumo de Webservice com Harbour.

Enviado: 17 Mai 2017 16:32
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.

Consumo de Webservice com Harbour.

Enviado: 18 Mai 2017 11:54
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

Consumo de Webservice com Harbour.

Enviado: 18 Mai 2017 12:44
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.

Consumo de Webservice com Harbour.

Enviado: 18 Mai 2017 14:10
por Toledo

Consumo de Webservice com Harbour.

Enviado: 18 Mai 2017 15:27
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.

Consumo de Webservice com Harbour.

Enviado: 24 Mai 2017 03:11
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

Consumo de Webservice com Harbour.

Enviado: 24 Mai 2017 14:52
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.

Consumo de Webservice com Harbour.

Enviado: 24 Mai 2017 19:34
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.

Consumo de Webservice com Harbour.

Enviado: 01 Dez 2017 13:55
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.

Consumo de Webservice com Harbour.

Enviado: 05 Dez 2017 17:22
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.

Consumo de Webservice com Harbour.

Enviado: 05 Dez 2017 19:26
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->

Consumo de Webservice com Harbour.

Enviado: 05 Dez 2017 20:18
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.

Consumo de Webservice com Harbour.

Enviado: 05 Dez 2017 21:26
por Daniel
Está lib e do harbour mesmo compatibilidade ou usar o Begin