Ir para conteúdo
  • Cadastre-se

dev botao

Integração com a Api da Domínio


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

Recommended Posts

Olá,

Estou fazendo a integração com a API da Domínio pelo Delphi 10, porém estou encontrando algumas dificuldades em enviar um arquivo XML para a API. O arquivo XML deve ser enviado no body do método junto com a query. Estou tentando fazer a chamada tanto pelo componente Indy 10.5.5 quanto pelo ICS 8.62, e estou obtendo respectivamente os seguintes erros:

-------------

Indy: Mensagem de Erro - HTTP/1.1 400

procedure TForm1.btnEnviarNotaClick(Sender: TObject);
Var
   Params: TIdMultipartFormDataStream;
   Response: TStringStream;
   Arquivo: TIdMultipartFormDataStream;
   ServerResponse: String;
begin
   Params := TIdMultiPartFormDataStream.Create;

   Params.AddFile('file[]', 'C:\notafiscal.xml', 'application/xml');
   Params.AddFormField('query', '{"boxe/File":true}');

   IdHTTP.Request.CustomHeaders.Clear;
   IdHTTP.Request.CustomHeaders.Values['Accept']        := '*/*';
   IdHTTP.Request.CustomHeaders.Values['Content-Type']  := 'multipart/form-data; boundary=' + Params.Boundary;
   IdHTTP.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + Token;
   IdHTTP.Request.CustomHeaders.Values['ContentType']   := 'application/json';
   IdHTTP.Request.CustomHeaders.Values['User-Agent']    := 'PostmanRuntime/7.26.5';
   IdHTTP.Request.CustomHeaders.Values['Connection']    := 'Keep-Alive';

   ServerResponse := IdHTTP.Post(edtURL.Text, Params);
   mmResultAut.Lines.Add('Response: ' + ServerResponse);
end;

-------------

ICS: Response: {"error":{"code":500,"errors":[],"message":"HTTP 400 Bad Request"}}

procedure TForm1.Button7Click(Sender: TObject);
var
  Params: TIdMultipartFormDataStream;
  Memory: TMemoryStream;
  ServerResponse: String;
  json : TJSONObject;
  iStatCode : Integer;
  Header, Footer, RandBoundary: UTF8String;
begin
  try
     try
       SslHttpRest1.ContentTypePost := 'multipart/form-data';
       SslHttpRest1.Accept := '*/*';
       SslHttpRest1.Connection := 'keep-Alive';
       SslHttpRest1.ServerAuth := httpAuthBearer;
       SslHttpRest1.AuthBearerToken := Token;
       

        Params := TIdMultiPartFormDataStream.Create;

        Params.AddFile('file[]', 'C:\notafiscal.xml', 'application/xml');
        Params.AddFormField('query', '{"boxe/File":true}');     

        
        SslHttpRest1.ContentTypePost:= 'multipart/form-data; boundary=' + Params.Boundary; 

        SslHttpRest1.RestRequest(httpPOST, edtURL.Text);

        ServerResponse := SslHttpRest1.ResponseOctet;
        mmResultAut.Lines.Add('Response: ' + ServerResponse);
     except
        on B: EIdHTTPProtocolException do
           mmResultAut.Lines.Add('Erro: ' + B.ErrorMessage);
        on E: Exception do
           mmResultAut.Lines.Add('Erro: ' + E.Message);
     end;
  finally

  end;
end;

---------------

Na aplicação Postman que eles enviaram funciona normalmente:

{
    "lastStatusOn": "2020-10-15T12:45:40.501",
    "apiVersion": "v1",
    "boxeFile": false,
    "filesExpanded": [],
    "id": "643DA8F543AF4598AD47DFE62A1C9033",
    "status": {
        "code": "S1",
        "message": "Aguardando processamento. Por favor aguarde o arquivo ser processado."
    }
}
Link para o comentário
Compartilhar em outros sites

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