1. Molen28.04.2025 в 02:46от
Загрузка...
Загрузка...

Как делать POST и GET запросы

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем MDK, 09.11.2013.

  1. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    В данном уроке от портала ImbaCode.ru мы сейчас поговорим с Вами о том, как делать простейшие POST и GET запросы в Delphi, посредством стандартных компонентов Indy.

    Для начала поместим на форму компонент IdHTTP из вкладки "Indy Clients":
    [​IMG]

    Так же поставим на форму такие компоненты, как:
    - Edit (2x)
    - Memo
    - Button

    У нас должно получится примерно так:
    [​IMG]

    Как Вы уже могли понять, сперва мы будем делать POST запросы. Что такое POST запросы надеюсь не стоит подвергать огласке, ибо все программисты, которые пишут программы для работы с Интернет должны знать про это и не только.

    Создаем обработчик событии onclick два раза кликнув на наш Button.
    В сгенерированной процедуре объявляем такие переменные: Request типа TStringList и Response типа String.

    Дальше непосредственно создаем TStringList в переменной Request (Request := TStringList.Create) и внизу добавляем в эту переменную строки с данными, которые будут передаваться серверу в POST запросе. Но для этого же нам нужны данные, а прежде всего - сведения о POST запросе (ссылка, передаваемые данные, куки и т.д.). Можем "отснифать" практически любой POST запрос, главное знать как. Для примера я выбрал POST запрос в адрес сайта ProWebber, то бишь авторизацию. И так, добавляем:
    Код:
    Request.Add('login_name=' + Edit1.Text); //добавление первого параметра и его значения
    Request.Add('login_password=' + Edit2.Text); //добавление второго параметра и его значения
    Request.Add('login=submit'); //добавление третьего параметра и его значения
    Таким образом мы дали программе понять, что мы делаем POST запрос по какому-то адресу с данными с переменной Request.

    Теперь же перейдем к "делаем POST запрос".
    Для того чтобы сделать POST запрос и дальше уже получить ответ от сервера в определенную переменную, например в ту же самую переменную Response мы будем использовать следующий код:
    Код:
    Response := IdHTTP1.Post('http://prowebber.ru/', Request);
    Поясняю: чтобы отправить POST запрос используется функция Post в компоненте IdHTTP, которая принимает два аргумента, первый - адрес куда посылается запрос, второй - данные (логин, пароль, секретный вопрос и т.д.).

    Теперь можно смело вывести содержимое переменной в Memo вот таким вот простейшим образом:
    Код:
    Memo1.Text := Response;
    [​IMG]
    [HR][/HR]
    Теперь давайте же узнаем как делать простейшие GET запросы посредством тех же самых стандартных компонентов Indy.

    То же самое с IdHTTP из вкладки "Indy Clients" мы проделываем заново:
    [​IMG]

    На форму я поставил два компонента, а именно Button и Memo.
    [​IMG]

    Создадим обработчик событии onclick на Button и в сгенерившейся процедуре объявляем переменную Response типа String.
    Чтобы в IdHTTP делать GET запросы мы используем (по умолчанию) функцию GET, которая принимает только один аргумент: ссылку куда делать запрос.

    То есть, у нас получается примерно такой код:
    Код:
    Response := IdHTTP1.Get('imbacode.ru');
    Так же можно вывести содержимое переменной Response в Memo, тогда добавляется одна строчка кода:
    Код:
    Memo1.Text := Response;
    И у нас получается вот такой вот унылый результат, который можно разукрасить при присутствии фантазии:
    [​IMG]

    Пожалуй на этом все!
    Данный урок был написан Администрацией портала ImbaCode.


    Источник
     
  2. leshiy)))

    leshiy)))

    Статус:
    Оффлайн
    Регистрация:
    26.05.12
    Сообщения:
    812
    Репутация:
    294 +/-
    молодец!
     
  3. mAkeFFFF

    mAkeFFFF

    Статус:
    Оффлайн
    Регистрация:
    22.09.13
    Сообщения:
    19
    Репутация:
    1 +/-
    ещё бы написал о том как определить при пост запросе рабочий акк или нет
     
  4. Purtv09

    Purtv09

    Статус:
    Оффлайн
    Регистрация:
    02.11.13
    Сообщения:
    82
    Репутация:
    70 +/-
    Спасибо)
     
  5. Harry Switcher

    Harry Switcher

    Статус:
    Оффлайн
    Регистрация:
    07.09.13
    Сообщения:
    271
    Репутация:
    123 +/-
    Тоже бы хотелось увидеть, а так хороший урок! Спасибо! :i-m_so_happy:
     
  6. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Очень просто. Для него делать целый урок - глупость, ибо там все определяется через if.
     
  7. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.439
    Репутация:
    357 +/-
    Как раз для такого надо не один урок. Прокся может вернуть кучу разных ответов, одной строкой кода не отделаться.
     
  8. leshiy)))

    leshiy)))

    Статус:
    Оффлайн
    Регистрация:
    26.05.12
    Сообщения:
    812
    Репутация:
    294 +/-
    теперь сделай урок... с поэтапной авторизацией. как на юкозе.

    авторизовался, вылазиит окно, в которое надо ввести ещё одни данные.
     
  9. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Это то понятно, но если пошевелить мозгами то можно добиться результатов.
    Скоро напишу.
     
  10. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Не совсем понятно...
     
  11. leshiy)))

    leshiy)))

    Статус:
    Оффлайн
    Регистрация:
    26.05.12
    Сообщения:
    812
    Репутация:
    294 +/-
    ну... смотри. авторизовался, а надо ввести ещё одни данные для авторизации.
     
  12. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Это очень просто, если я тебя правильно понял.
     
  13. leshiy)))

    leshiy)))

    Статус:
    Оффлайн
    Регистрация:
    26.05.12
    Сообщения:
    812
    Репутация:
    294 +/-
    ну вот и сделай. примером послужит сайт юкоза.