работа с запросами

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
chodorenko

Сообщение chodorenko »

Вот возникла не тривиальная задача получать раз в несколько дней страничку с одними и темеже параметрами, решил автоматизировать , но не нахожу как организовать получени страницы средствами FPC

итак задача послать на урл <a href='http://test.site/cgi-bin/script.cgi' target='_blank'>http://test.site/cgi-bin/script.cgi</a> форму методом пост ну например такую number=1, number=2, group=1, group=3
и то что скрипт выплюнет обратно положить на с:\русское имя\folder1
Аватара пользователя
Сергей Смирнов
энтузиаст
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
Контактная информация:

Сообщение Сергей Смирнов »

Я юзал библиотеку от Synapse. Вот, например, получение списка валют с сервера ЦБ:

Код: Выделить всё

uses
  ... XMLRead, DOM, httpsend, ...


procedure TfrmMain.GetCurrencies;
var
  HTTP: THTTPSend;
  CurrXML: TXMLDocument;
  N, C: TDomNode;
  E: TDomElement;
  i: Integer;
  TempCursor: TCursor;
begin
  FCurrenciesCount := 0;
  TempCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  Application.ProcessMessages;
  SetLength(FCurrenciesList, 0);
  SetLength(FCurrenciesList, 1);
  i := 0;
  HTTP := THTTPSend.Create;
  try
    HTTP.ProxyHost := PROXY_SERVER;
    HTTP.ProxyPort := PROXY_PORT;
    HTTP.ProxyUser := PROXY_USER;
    HTTP.ProxyPass := PROXY_PASSWORD;
    if HTTP.HTTPMethod('POST', GET_CURRENCIES_URL) then
    begin
      ReadXMLFile(CurrXML, HTTP.Document);
      N := CurrXML.DocumentElement;
      N := N.FirstChild;
      while Assigned(N) do
      begin
        E := N as TDomElement;
        FCurrenciesList[i].ID := E.GetAttribute('ID');
        C := N.FindNode('Name');
        if Assigned(C) then
          FCurrenciesList[i].Name := GetNodeTextContent(C as TDomElement);
        C := N.FindNode('EngName');
        if Assigned(C) then
          FCurrenciesList[i].EngName := GetNodeTextContent(C as TDomElement);
        FCurrenciesCount := i + 1;
        N := N.NextSibling;
        if Assigned(N) then
        begin
          Inc(i);
          SetLength(FCurrenciesList, i + 1);
        end;
      end;
    end
    else
    begin
      btnGetRateHistory.Enabled := False;
    end;
  finally
    HTTP.Free;
    Screen.Cursor := TempCursor;
  end;
end;

Только метод Get у меня как-то не заработал...
chodorenko

Сообщение chodorenko »

Большое спасибо , пойду разбираться
Ответить