Вы не публикуете свои данные, используя правильный метод TIdHTTP.Post()
.
Вы используете перегруженный метод Post()
, который принимает TStrings
в качестве ввода. Этот метод предназначен для отправки веб-форм HTML в формате application/x-www-webform-urlencoded
. Но вы устанавливаете для свойства Request.ContentType
значение 'multipart/form-data'
, поэтому отправляете некорректный запрос.
Для отправки данных в формате multipart/form-data
необходимо использовать перегруженный метод Post()
, который принимает TIdMultipartFormDataStream
в качестве ввода, например:
procedure TForm1.btn1Click(Sender: TObject);
var
params: TIdMultipartFormDataStream;
begin
params := TIdMultipartFormDataStream.Create;
try
params.AddFormField('content', 'Test');
params.AddFormField('username', 'testname');
params.AddFormField('avatar_url', 'https://i.imgur.com/ivUiaOr.png');
httpclient1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
httpclient1.Post('https://discordapp.com/api/webhooks/443763508073594880/r8Oba0ws7WeN-n57TeF6BF6CKFFjviov6XMrMVVDUY_G18zmmY7VUwZqCiAOs9nz-CyC', params);
finally
params.Free;
end;
end;
Если вы не загружаете фактический файл (что вы сделали бы, используя метод TIdMultipartFormDataStream.AddFile()
), вы можете опубликовать свои текстовые поля в формате 'application/json'
, используя TStream
(не TStringList
), например :
procedure TForm1.btn1Click(Sender: TObject);
var
params: TStringStream;
begin
params := TStringStream.Create('{"content": "Test", "username": "testname", "avatar_url": "https://i.imgur.com/ivUiaOr.png"}', TEncoding.UTF8);
try
httpclient1.Request.ContentType := 'application/json';
httpclient1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
httpclient1.Post('https://discordapp.com/api/webhooks/443763508073594880/r8Oba0ws7WeN-n57TeF6BF6CKFFjviov6XMrMVVDUY_G18zmmY7VUwZqCiAOs9nz-CyC', params);
finally
params.Free;
end;
end;