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