Ir para conteúdo
  • Cadastre-se

dev botao

Ajuste retorno API Sicoob


Ver Solução Respondido por Cleonir,
  • Este tópico foi criado há 502 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa Tarde

Encontrei um problema ao consultar o boleto na API do Sicoob.

no arquivo ACBrBoletoRet_Bancoob.pas linha 130

esta disparando uma exceção devido ao retorno da consulta não ser do tipo array conforme documentação da api:

image.png.f4a3dd13ed86e67be0ea3c9f037e7cd0.png

 

então fiz a seguinte alteração para continuar preenchendo o componente, não sei se é a melhor forma, mas precisar ser ajustado senão a consulta não alimenta o componente mesma retornando os dados corretamente.

alterei a linha

aJsonViolacoes := aJson.Values['resultado'].AsArray;

para:

        try
          aJsonViolacoes := aJson.Values['resultado'].AsArray;
        except
          aJsonViolacoes := TJsonArray.Create;
        end;

segue o arquivo em anexo.

   

ACBrBoletoRet_Bancoob.pas

  • Membros Pro
Postado

poderia utilizar a seguinte abordagem então para resolvermos o except:

        if (aJson.Values['resultado'].ValueType = jvArray) then begin
            aJsonViolacoes := aJson.Values['resultado'].AsArray;
        end else begin
            aJsonViolacoes := TJsonArray.Create;
       end;

neste caso verifico se se o tipo é um Array senão crio o objeto vazio para continuar a execução sem causar erros.

  • Solution
Postado

Bom dia.

É só adicionar um if pelo tipo da operação. Por que nesse caso não tem o objeto status que esta tentando carregar ali.

Como mencionei em

 

  • Este tópico foi criado há 502 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...