我正在尝试向 Delphi 中的 API 发送 POST,但收到错误 400。我可以调试这个吗?

问题描述 投票:0回答:1

我是一名Delphi程序员,这是我第一次接触HTTP。

我尝试向 API 发送

POST
请求,但收到
400 BAD REQEST
错误。

这是我正在使用的代码:

FormData := TIdMultipartFormDataStream.Create;
try
  // Add the file to the form data
  FormData.AddFile('file', FilePath, 'application/json');  // Content type for JSON file

  FormData.AddFormField('input_file_id', File_ID);
  FormData.AddFormField('completion_window:','"24h"');

  // sets the params for the HTTP request
  idHTTP.Request.ContentType := 'multipart/form-data';
  APIKey := 'Bearer ' + MY_API_Key;
  idHTTP.Request.CustomHeaders.AddValue('Authorization', APIKey);

  Response := IdHTTP.Post(FinalURL, FormData);           // Eexec the POST request

  // parse the JSON string of the response
  JsonResponse := TJSONObject.ParseJSONValue(Response);
  try
    if JsonResponse <> nil then
    begin
      File_Upload_Response_Object.id := (JsonResponse.GetValue<string>('id')).ToInteger;
      // ... all the other params parsed ...
    end
    else
    begin
       File_Upload_Response_Object.ErrorCode := 1; // I send back an error of some type
    end;
  finally
    JsonResponse.Free;
  end;    
finally   
  FormData.Free;
  SSLHandler.Free;
  idHTTP.Free;
end;   

我做错了什么?

这是

FHTTP.Proto
的内容似乎进入了post命令的“结果”:

($29A8C1E1820, '', $29A8C05F4A0, '', '', '', '', '', -1, -1, -1, -1, '', 'multipart/form-data', '', $29A8C05F680, 0, 0, '', 0, '', False, '', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', '', '', '', '', '', '', '', 'Mozilla/3.0 (compatible; Indy Library)', '', '', '', $29A8D98AED0, False, nil, '', $29A8C1E1820, '', '', nil, ctNormal, Id_IPv4, '')  

我真的看不到任何有用的东西。

http delphi post multipartform-data idhttp
1个回答
0
投票

在此行:

FormData.AddFormField('completion_window:','"24h"');

按键名称上不应有

:
。另外,您确定应该引用该值吗?

试试这个:

FormData.AddFormField('completion_window','24h');
© www.soinside.com 2019 - 2024. All rights reserved.