Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2923 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa Tarde,

Realizei a atualização dos componente hoje a tarde.

Continuo encontrando problemas com a chamada para este webservice no Delphi XE 7.

Porém fiz uma alteração para teste em um fonte e consegui fazer a consulta com sucesso.

Caso no fonte ACBRDfeWebService eu comente os IFDEFS que existem nela e force com que o xml seja montado já com o cabeçalho utf-8 a consulta é realizada com sucesso.

procedure TDFeWebService.DefinirEnvelopeSoap;
var
  Texto: String;
begin
  { Sobrescrever apenas se necessário }

// {$IFDEF FPC}
   Texto := '<' + ENCODING_UTF8 + '>';    // Envelope já está sendo montado em UTF8
//  {$ELSE}
//   Texto := '';  // Isso forçará a conversão para UTF8, antes do envio
//  {$ENDIF}

Debugando o código, percebi que com o código dessa maneira, ao executar a procedure EnviarDados, a string não é reformatada ao chamar a função ConverteXMLtoUTF8, somente é retornada a procedure que é passada por parâmetro.

if not XmlEstaAssinado(FPEnvelopeSoap) then
    FPEnvelopeSoap := ConverteXMLtoUTF8(FPEnvelopeSoap);

Caso eu descomente o IFDEF na procedure DefinirEnvelopeSoap ao chamar a funcao ConverteXMLtoUTF8, será adicionado o cabeçalho <?xml version="1.0" encoding="UTF-8"?> na string, após isso ao tentar executar o enviardados retorna o erro de falha no schema xml.

Provavelmente este IFDEF não possa ser comentado, porém gostaria de uma idéia de vocês caso tenham alguma alternativa para resolver essa encrenca.

  • Fundadores
Postado

Não compreendi... o cabeçalho de UTF8 é necessário, e por isso precisa ser adicionado...

A sua modificação faz exatamente isso... Porém, dessa maneira, está errado, pois não haverá a conversão de UNICODE para UTF8...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Concordo com você Daniel, o xml era montado corretamente, na função EnviarDados ele adicionava o cabeçalho e convertia a string para UTF-8, não faz muito sentido mesmo a alteração que fiz, mas é como se na função ConverteXMLToUTF8 fosse alterado algo na string que causasse o erro, enfim.

Outra forma de ajustar sem precisar comentar as diretivas DefinirEnvelopeSoap é alterar a função EnviarDados da seguinte maneira.

if not XmlEstaAssinado(FPEnvelopeSoap) then
    begin
    if not XmlEhUTF8(FPEnvelopeSoap) then
      begin
      FPEnvelopeSoap := '<' + ENCODING_UTF8 + '>' + FPEnvelopeSoap;    // Envelope já está sendo montado em UTF8
      FPEnvelopeSoap := ConverteXMLtoUTF8(FPEnvelopeSoap);
    end;
  end;

Continua não fazendo muito sentido, rsrs, mas enfim.

Não sei se ajuda alguma coisa no diagnóstico mas as minhas rotinas estão em um servidor de aplicação multicamadas datasnap.

  • Fundadores
Postado

Mudar essa rotina pode causar muito efeito colateral... e realmente acho que os fontes estão corretos da maneira que estão...

Por favor descreva melhor o problema, e tente fornecer um passo a passo, de como reproduzi-lo, usando o Demo do ABCrNFe

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Segue projeto em anexo..

Dentro do projeto tem a ACBRDFeWebServices.pas com um comentário na função EnviarDados;

o funcionamento é simples, soh é necessário preencher informações de certificado e senha na unit1.pas e ao rodar a aplicação informar o cnpj para executar a chamada ao webservice.

utilizar o delphi XE7.

TesteMDFe.rar

Postado

Cara, acho que abandonamos as tentativas, a única diferença para o meu ambiente é que utilizo capcom.

A princípio vou manter o fonte alterado adicionado em meus projetos, nas próximas versões que sincronizar o ACBr eu refaço os testes.

Obrigado pela ajuda.

  • 1 ano depois...
Postado

Bom dia, 

 

Sei que o tópico é antigo, porém passei pelo mesmo problema com o retorno de status 215 (Falha no schema XML).

Eu utilizava na propriedade SSLLib o Capicom da seguinte forma

        ACBrMDFe1.Configuracoes.Geral.SSLLib := libCapicomDelphiSoap;


Consegui resolver alterando essa propriedade para libCapicom antes de enviar o evento para retornar os manifestos não encerrados:

        ACBrMDFe1.Configuracoes.Geral.SSLLib := libCapicom;

 

Caso alguém passe pelo mesmo erro, funcionou para mim dessa forma.

att.

  • Curtir 4
  • Este tópico foi criado há 2923 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.