IdHTTP1.Request.ContentType :='multipart/form-data';, а потом посылаешь
IdHTTP1.HandleRedirects := True;
// Тут может понадобиться еще установить поля IdHTTP1.Request по аналогии с теми, которые шлет браузер
mpFormDS := TIdMultiPartFormDataStream.Create;
mpFormDS.AddFormField ('submit', 'Бесплатно'); // Имитация нажатия на кнопку "Халява" : )
IdHTTP1.Post(myURL, mpFormDS); // шлем запрос по адресу с параметрами, то он будет означать не только открыть страницу, а еще и нажать на кнопку, означенную в mpFormDS. Ну, а дальше - подождать редиректа и выдернуть адрес - это дело техники. Вот только проверить я это не могу, у меня 2009, а там, блин, с кодировками в Инди все не просто плохо, а очень плохо. Отошлётся какая-то белиберда, и кнопка не нажмётся... Эх, почему она по-русски названа? Было бы латинскими буквами - проблем бы не было. Может, ранние версии и сработают, семерка, например.
procedure TForm1.Button1Click(Sender: TObject);
var mpFormDS:TIdMultiPartFormDataStream;
begin
with idhttp1 do begin
HandleRedirects:=true;
IdHTTP1.Request.ContentType :='multipart/form-data';
request.UserAgent:=usag[random(u-1)+1];//тут куча юзер-агентов
end;
mpFormDS := TIdMultiPartFormDataStream.Create;
mpFormDS.AddFormField('submit','Бесплатно');
IdHTTP1.Post('http://depositfiles.com/ru/files/yu3qmo80r', mpFormDS);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.text:=idHttp1.Response.RawHeaders.GetText;
end;
var s:string;
d:TStringList;
...
s:=copy(memo1.text,pos('/get_file.php?fid',memo1.text),50);
d:=tstringlist.Create;
d.Add(s);
memo1.text:=idhttp1.Post('http://depositfiles.com/ru',d);
function Get_Address (s : string) : string;
var
P_Start, P_Finish : Integer;
begin
P_Start := Pos('/get_file.php?fid=', s);
P_Finish := PosEx('''', s, P_Start);
result := 'http://depositfiles.com/ru' + Copy(s, P_Start, P_Finish - P_Start);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mpFormDS : TIdMultiPartFormDataStream;
My_URL, st:string;
first_Ans : String;
begin
try
IdHTTP1.Request.ContentType := 'multipart/form-data';
IdHTTP1.HandleRedirects := true;
mpFormDS := TIdMultiPartFormDataStream.Create;
mpFormDS.AddFormField('submit', 'FREE downloading'); // Имитация нажатия на кнопку "Халява" : )
MyURL := Edit1.Text;
First_Ans := IdHTTP1.Post(MyURL, mpFormDS); // Первый ответ, его будем парсить для "fid="
Sleep(1000); // Чуть-чуть подождать
Memo1.Text := First_Ans; // Показать, что взяли
// Теперь ждем минимум 60 сек. Я сделал по-наглому:
Sleep(65000);
// Можешь просто повесить на таймер, можешь другим потоком ждать
// Ага, прошли 60 сек. Что дальше? А вот что:
st := IdHTTP1.get(Get_Address(first_Ans)); // Получаем ответ сервера на GET-запрос (не POST)
memo1.Lines.Add('GET:');
memo1.Lines.Add(st);
mpFormDS.Free;
except
// Сообщаем об ошибке
Form1.Caption := 'Error';
end;
end;