Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

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