我是一名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, '')
我真的看不到任何有用的东西。
在此行:
FormData.AddFormField('completion_window:','"24h"');
按键名称上不应有
:
。另外,您确定应该引用该值吗?
试试这个:
FormData.AddFormField('completion_window','24h');