Ir para conteúdo
  • Cadastre-se

dev botao

webservice retorno um XML vazio


Ver Solução Respondido por alexandre katcharowski,

Recommended Posts

  • Membros Pro

Olá, boa tarde, estou tentando protocolar uma NFS-e utilizando o componente ACBRBNFSEX, fiz todos os testes com o programa exemplo, tudo funcionou perfeitamente, então copiei o componente para minha aplicação

fiz a configuração, carreguei os dados e o mesmo metodo do programa exemplo  "acbrnfsex.Emitir(numero_lote, meUnitario)" , porém com minha aplicação retorna o seguinte erro:

webservice retorno um XML vazio

Debuguei  o programa exemplo e também minha aplicação, mas não consegui compreender qual a diferença.

Alguém pode me ajudar ?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Moderadores

no caso tem que comparar o que faltou escrever no seu código baseado no exemplo.

nós só temos o exemplo como base para ir lhe dizendo, mas se tu está falando que fez exatamente igual

pasta schemas? dll´s a parte de configurar exatamente

a alimentação do componente?

gerou os soaps ? se sim comparou com gerados no exemplo

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

obrigado pelas respostas, porém no provedor IPM para Guaramirim não é necessário assinar o xml, portanto creio que as configurações do certificado digital são desnecessárias, os schemas, também percebi que não é necessáro

procedure TACBrNFSeXProvider.ValidarSchema(Response: TNFSeWebserviceResponse; aMetodo: TMetodo);
var
  AErro: TNFSeEventoCollectionItem;
  Erros, Schema: string;
begin
  if not ConfigSchemas.Validar Then Exit; , <--------------------------- 

  SetNameSpaceURI(aMetodo);

  Erros := '';
  Schema := '';

quanto as configurações do componente, conforme comentei, dei ctrl C e ctrl v no meu projeto, mantendo todas as configuraçõeses que já tinha, as demais, copiei o codigo fonte que estava no programa exemplo,

agora este "gerou soaps" aí, isso não sei ...., sempre achei que o próprio componente gerasse isso.

enfim, sei que tem algo diferente, por isso estou pedindo alguma ajuda.

Link para o comentário
Compartilhar em outros sites

  • Consultores
1 hora atrás, alexandre katcharowski disse:

portanto creio que as configurações do certificado digital são desnecessárias

Não precisa do certificado para assinar, mas precisa das configurações de SSL/TLS para comunicação com o serviço.
Se não configurou nada com relação a isso, esse pode ser um problema.
Revise também a parte referente à copia das dependências (openssl, libxml2), pois sem os arquivos corretos na pasta da aplicação também podem ser o seu problema.

1 hora atrás, alexandre katcharowski disse:

quanto as configurações do componente, conforme comentei, dei ctrl C e ctrl v no meu projeto, mantendo todas as configuraçõeses que já tinha, as demais, copiei o codigo fonte que estava no programa exemplo,

Cuidado com a cópia dos fontes do programa de exemplo, ele serve para você entender como trabalhar com o componente, mas você deve adequar à realidade da sua aplicação.
Veja se implementou a parte de carregar as configurações no componente através do método LerConfiguracao.
Ele se baseia em carregar as configurações do ini nos campos da tela e depois carregar as configurações dos campos no componente.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

estou utilizando o programa de exemplo como orientação, mas não estou tendo sucesso, já fiz tudo o que era possível, até incorporei o FORM do programa exemplo no meu projeto, criei uma opção no menu

e executei o programa exemplo juntamente com nosso aplicativo, para verificar se o problema fosse algum arquivo,dll ou pasta que estivesse faltando, executei nosso aplicativo e selecionei o programa exemplo,

enviei uma nfse de teste e funcionou perfeitamente, então copiei toda estrutura do programa demo para dentro do FORM do nosso projeto onde envia a NFSE, e fiz a carga do componente com o mesmo arquivo *.ini

utilizado no programa exemplo, da mesma forma, carreguei os campos na tela, e da tela alimentei o componente, como ocorre no programa exemplo, exatamente da mesma forma, carreguei no componente uma nota de teste

gerada pelo nosso aplicativo, utilizei o mesmo comando do programa exemplo e não funcionou, achei que o problema estava no momento de carregar os dados da nota, então copiei toda parte do fonte do programa exemplo

onde carrega os dados da nfse de teste, enviei e também não funcionou.

Resumindo, mesmo fazendo tudo igual como esta no programa exemplo, não funciona

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia, após varias tentativas, fiz um programa totalmente novo:

1) inclui o componente acbrnfsex
2) copiei o pagecontrol1 que estava no programa exemplo e inclui no form
3) copiei o arquivo ACBrNFSeX_Exemplo.ini, para utilizar os mesmos dados que estão sendo passados para o programa exemplo
4) inseri a procedures LerConfiguracao
5) inseri a procedure ConfigurarComponente
6) inseri a procedure AtualizarCidades (não se se era necessário, mas fiz)
7) inseri a procedures AtualizarSSLLibsCombo (não se se era necessário, mas fiz)
😎 executei o programa, chamei as procedures e acompanhei, tudo preenchido conforme o programa exemplo
9) carreguei o componente com  a nfse, acompanhei o preenchimento dos campos, tudo correto
10) chamei a procedure Emitir(numero_lote, meUnitario)
11) acompanhei o programa, quando chega na procedure TACBrNFSeXProvider.Emite da unit ACBrNFSeXProviderbase, na linha 1948
    EmiteResponse.ArquivoRetorno := AService.GerarNFSe(ConfigMsgDados.DadosCabecalho, EmiteResponse.ArquivoEnvio); 

volta a mensagem "webservice retornou um xml vazio"

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia @alexandre katcharowski,

Por favor use o programa exemplo do componente ACBrNFSeX que se encontra no SVN.

Configure ele para salvar os arquivo Soap, essa configuração se encontra na aba WebService: Salvar envelope SOAP.

Anexe os XMLs SOAP salvos em disco após tentar enviar o RPS.

É para ele salvar dois arquivos, um referente ao envio e outro do retorno.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Italo, estou usando este programa, e funciona perfeitamente, mas quando utilizo o componente em outro form, não consigo faze-lo funcionar, o programa exemplo então deve ter alguma configuração a mais que não estou conseguindo saber qual é, pois já fiz 2 programas novos e nenhum deles funciona, mesmo tendo colocado todas as configurações que estão no programa exemplo.

Voce pediu dos XMLS de envio e retorno, estão sendo gerados corretamente, se quiser posso lhe enviar, mas acho que é inútil, pois está tudo correto

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

as vezes está sendo questionado o uso do programa exemplo e o fato de estar copiando partes dele para gerar outro, estou fazendo apenas pois quando tentei implementar este procedimento no nosso projeto, não funcionou, até este momento, nada havia sido copiado do programa exemplo, mas sim utilizado todas as rotinas do nosso projeto, mas devido ao não funcionamento, fizemos várias tentativas utilizando-se das rotinas do programa exemplo, na esperança de que funcionasse, 

porém nem assim conseguimos fazer funcionar, a idéia de criar programas novos, foi para tirar a dúvida que se no nosso projeto havia algo que estivesse conflitando

Link para o comentário
Compartilhar em outros sites

  • Consultores

@alexandre katcharowski,

Entendi, me diz uma coisa na sua aplicação você esta configurando as propriedades de configuração WSUser e WSSenha?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Sim Ítalo, todas as propriedades do componente estão sendo preenchidas, foram checadas e conferidas, são as mesmas que estão no arquivo .ini do programa exemplo que funciona, tanto no programa exemplo quanto no programa nosso de teste, as rotinas são as mesmas, e ambas preenchem corretamente todas as propriedades, debuguei o programa até o momento do envio do xml e conferi o conteúdo de quase todas as variáveis, em ambos os casos aparentemente são sempre iguais

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Ola Ítalo, como já citei anteriormente, incorporei o programa exemplo dentro da nossa aplicação, criei uma opção no menu do nosso projeto que para executar o programa exemplo, agora não mais uma executável separado, mas sim um FORM do projeto

então estamos executando o programa exemplo de nossa aplicação e funciona perfeitamente, então fica descartada a possibilidade de faltar alguma DLL ou pasta ou qualquer outro arquivo, o único problema é que o componente no FORM do programa de demonstração funciona, mas se usar em qualquer outro FORM, mesmo passando todas as configurações que tem no FORM do programa de demonstração, quando executado retorna o erro.

Resumindo, o programa demonstração é integrante do nosso projeto (foi feito isto, para tentar encontrar uma solução apenas, não é nosso objetivo deixar este programa) , e funciona quando executado, porém se usar o componente ACBRNFSEX em outro form qualquer, não funciona, foi feito 2 programas novos sem nenhum outro componente, apenas com este ACBRNFSEX e feito tudo igual ao programa exemplo, mas não funciona, nunca vi disto.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Provavelmente ao copiar os métodos que alimentam o componente, algo ficou para traz ou faltou chamar algum método. 

Eu acredito que falta setar o município e com isso o provedor não foi identificado.

Uma sugestão para você tentar caçar isso é colocar um ponto de parada no create e show do programa de exemplo, vai debugando com F7/F8 e anote o caminho. 

Faça o mesmo no form da sua aplicação e veja se tudo é feito igual. 

Faça o mesmo com o método Emitir().

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
51 minutos atrás, alexandre katcharowski disse:

Bom dia Renato, obrigado pela resposta, mas já fiz tudo isto, várias vezes

então agora é depurar, linha alinha pra tentar entender o que está fazendo de diferente.

pode ser até dll diferente junto  a pasta do seu exe onde ele busca primeiro e o exemplo estar buscando de outro lugar

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia!

Complementando as respostas fornecidas.

Coloque um break-point no local indicado pelo print:

image.png

Debugue usando o step-into(F7) nos dois cenários e compare URL e FPEnvio.

Partindo deste ponto, você vai voltando até encontrar o ponto que originou a diferença.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution

Senhores, fim da novela.

Mistério foi desvendado, o problema era o seguinte: 

quando foi inserido o componente no FORM do nosso aplicativo, como não havia necessidade de assinar o XML, não foram feitas as configurações do certificado digital, e por algum motivo, não sei qual, pelo fato de não ter sido configurado estes parametros, retornava este erro.

Eu não dei nenhuma atenção a este detalhe, pois como não era necessário assinar o XML, não configurei estes parametros nem no componente e nem no arquivo *.ini, todos os demais clientes que temos usam o provedor Betha, e ainda esta utilizando o componente antigo ACBRNFSE, que optamos por manter temporariamente até que for possível fazer uma atualização, e este cliente era uma exceção (IPM) então resolvemos fazer uma rotina a parte para utilizar o novo componente somente para ele.

Então fica a dica, mesmo que não seja necessário assinar o XML, tem que configurar os parametros, ou talvez eu não saiba, tenha algum parametro para definir isto.

Obrigado a todos que tentaram me ajudar, e mais peço-lhes desculpas pela minha falta de conhecimento.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.