Ir para conteúdo
  • Cadastre-se

dev botao

Tratamento De Erro Em Resposta Ao Webservice


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

Recommended Posts

Olá!

 

Colegas, estou implementando em meu aplicativo a NFeS e no momento encontro-me "travado" em relação ao tratamento das mensagens do webservice como a resposta abaixo:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
 <s:Fault>
  <faultcode>s:47</faultcode> 
  <faultstring xml:lang="pt-BR">Autenticacao invalida. O cpf ou a senha do usuario estao incorretos.</faultstring> 
  </s:Fault>
  </s:Body>
  </s:Envelope>

Para isso estou utilizando a função ACBrNFSe1.Gerar( cLote ) que me retorna um Boolean e no caso sempre True rss

outra coisa que observei foi que no código da unit ACBrNFSeWebServices :

    ReqResp.Execute(Acao.Text, Stream);
    StrStream := TStringStream.Create('');
    StrStream.CopyFrom(Stream, 0);

    FRetornoWS := TiraAcentos(ParseText(StrStream.DataString, True));

    FRetWS     := FProvedorClass.GetRetornoWS(acGerar, FRetornoWS);

    StrStream.Free;

o FRetornoWS, recebe a informação acima declarada "erro", mais ao passar pelo FRetWS fica sem valor e mesmo assim processe com as funções retornando como true a solicitação.

 

Bom, nos meus testes estou utilizando o provedor SAATRI e Implementando o FREIRE.

 

fica a perguna não teriamos que colocar logo após o strStream.free; um tratamento para erros? já que o webserveci retorna uma estrutura única: <s:Fault> </s:Fault> 

 

A ideia seria cada unit de provedor ter uma função boolean que trata a mensagem de erro se houver retorna false, capturamos e informamos ao usuário. 

para isso precisa-se modificar a classe padrão TProvedorClass adicionando a rotina retornando sempre true por default e iremos implementando isso para os mesmo.

Não encontrei um local especifico no fontes para esse tratamento se houver me informe por favor. 

 

Obs.: no provedor já coloquei como retorno proprio FRetornoWS para o GetRetornoWS e deu o mesmo erro ou seja sem tratamento esperado. 

 

Alguém já passou pelo mesmo? como estão tratando isso? 

Obrigado!

 

 

Andeson de Jesus

Nyno.net

Link para o comentário
Compartilhar em outros sites

Meus caros colegas, consegui resolver!

identifiquei onde está fazendo o tratamento do retorno e adicionei novas rotinas para receber o tratamento do WebService do Provedor Freire e da Mensagem retornada pelo Provedor Saatri.

 

foi necessário fazer alguns ajustes em algumas funções como a util: SeparaDados

 

Mais agora os erros são tratados dentro do aplicativo retornando falso quando houver erro. 

 

Italó, se tiver um tempo verifique se os fontes em anexo está dentro dos conformes do grupo e atualize os fontes

 

Obrigado!

ACBrNFSeConfiguracoes.pas

ACBrNFSeWebServices.pas

ACBrProvedorFreire.pas

ACBrProvedorSaatri.pas

pnfsGerarNfseResposta.pas

pnfsNFSeG.pas

pnfsNFSeW.pas

ACBrUtil.pas

Andeson de Jesus

Nyno.net

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Anderson,

 

Já esta disponivel as suas alterações.

 

Exceto a que você fez na unit ACBrUtil.pas

 

Veja como eu resolvi o problema na unit ACBrNSeWebServices.pas

 

Atualize e teste.

 

Muito obrigado pela colaboração.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3836 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.

The popup will be closed in 10 segundos...