Ir para conteúdo
  • Cadastre-se

joaovictorsp

Membros
  • Total de ítens

    5
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

joaovictorsp's Achievements

Newbie

Newbie (1/14)

  • One Year In
  • Dedicated Rare
  • First Post
  • One Month Later
  • Week One Done

Recent Badges

0

Reputação

  1. Consegui fazer a integração com a nova API. Abaixo está a função que utilizo pra obter o token pra autenticar na API. function GetTokenSNGPC(username, password: string): string; var url: string; Req: IRequest; Resp: IResponse; begin Result := ''; try url := API_BASE_URL + '/v1/Authentication/GetToken'; Req := CreateRequest(url, False); Req.AddBody('{"username":"' + username + '", "password": "' + password + '"}'); Resp := Req.Post; LogResponse(Resp, 'Obtendo token para autenticação na API do SNGPC'); if Resp.StatusCode = 200 then Result := Trim(Req.Post.Content).Replace('"', ''); except on E: Exception do begin Logger.Error('Erro ao obter token para autenticar na API do SNGPC.'); end; end; end; O arquivo a ser enviado continua sendo no mesmo formato de antes Pra autenticar na API seria algo assim (utilizando RestRequest4D) // Função que utilizo pra criar requisição function CreateRequest(url: string; authenticated: Boolean): IRequest; var Request: IRequest; begin Request := TRequest.New; if authenticated then Request.TokenBearer(BEARER_TOKEN); // TOKEN obtido chamando a função GetTokenSNGPC passando usuário e senha Request.BaseURL(url); Request.ContentType('application/json'); Result := Request; end; Pra enviar o arquivo a função que utilizo é a seguinte: function EnviarXmlSngpc(Arquivo, AToken: string): String; var lRequest: IRequest; lResponse: IResponse; JSONBody: TJSONObject; JSONData, EncodedXml, Base64String, Base64XMLFile: String; Bytes: TBytes; begin { Envia o mesmo arquivo que enviava pra API antiga } Result := ''; try { Cria a requisição } BEARER_TOKEN := AToken; lRequest := CreateRequest(API_BASE_URL + '/v1/FileXml/EnviarArquivoXmlSNGPC', True); lRequest.Accept('application/json'); { Monta o JSON conforme a nova API do SNGPC } { Lê o arquivo XML } Bytes := TFile.ReadAllBytes(Arquivo); { Codifica em Base64 } Base64String := TNetEncoding.Base64.EncodeBytesToString(Bytes); Base64String := StringReplace(Base64String, '#13', '', [rfReplaceAll]); Base64String := StringReplace(Base64String, '#10', '', [rfReplaceAll]); Base64String := StringReplace(Base64String, sLineBreak, '', [rfReplaceAll]); Base64XMLFile := '"' + Base64String + '"'; Logger.Info('JSON enviado à API SNGPC: ' + Base64XMLFile); lResponse := lRequest.AddBody(Base64XMLFile).Post(); LogResponse(lResponse, 'Enviando XML para o SNGPC'); { Verifica a resposta } if lResponse.StatusCode = 200 then begin Logger.Info('Arquivo enviado com sucesso!'); Logger.Info('Resposta da API: ' + lResponse.Content); Result := Trim(lResponse.Content); end else begin Logger.Error('Falha no envio do arquivo. Status Code: ' + lResponse.StatusCode.ToString); Logger.Error('Resposta da API: ' + lResponse.Content); end; except on E: Exception do begin Logger.Error('Erro ao enviar o arquivo: ' + E.Message); Logger.Error(E.StackTrace); end; end; end;
  2. Alguém tem um exemplo de resposta da API do envio de XML? Não tem exemplo na documentação e não tem API de homologação pra descobrir por tentativa e erro.
  3. Imagino que primeiro chame o endpoint para pegar o token e depois na hora de fazer o post no outro endpoint para enviar o XML, esse token seja setado como Bearer Token. Colocando um header com nome: Authorization e valor: Bearer TOKEN_RECEBIDO_NO_OUTRO_ENDPOINT Tenho que testar ainda, poderia ter uma versão de homologação dessa API para poder enviar algo pra testar.
  4. Encontrei a documentação. Tive que fazer login com a conta do gov.br. Fica em: https://api.anvisa.gov.br/sngpc/docs
  5. Alguém sabe como deve ser enviado o XML no endpoint /v1/FileXml/EnviarArquivoXmlSNGPC ? Só da pra saber que deve enviar uma string. Será que é pra enviar o conteúdo do XML? Enviar o arquivo em base64? ... Documentação incompleta.
×
×
  • 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.