При работе с веб-запросами в Delphi одним из распространенных способов является использование библиотек, таких как Indy. Однако, если вам необходимо выполнить веб-запрос POST без использования этих библиотек, можно воспользоваться встроенными функциями Windows, такими как WinInet.
В этом примере мы рассмотрим, как выполнить веб-запрос POST с помощью только встроенных функций Delphi 2010.
Для начала, нам понадобится импортировать библиотеку WinInet:
Теперь давайте напишем процедуру, которая будет отправлять POST-запрос:
procedure TForm1.Button1Click(Sender: TObject);
var
content, data: string;
accept: string;
buffer: PChar;
hSession, hConnect, hRequest: HINTERNET;
bytesRead: Cardinal;
name, password: string;
begin
// Устанавливаем размер буфера
SetLength(buffer, 512);
// Устанавливаем имя пользователя и пароль
name := 'Loginname';
password := 'Passwort';
// Устанавливаем заголовки и данные запроса
content := 'Content-Type: application/x-www-form-urlencoded';
data := 'v=2&universe=uni34.ogame.de&login=' + name + '&pass=' + password + '&button.x=22&button.y=5';
accept := '*/(*)';
// Устанавливаем сеанс и подключаемся к серверу
hSession := InternetOpen('MyAgent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
hConnect := InternetConnect(hSession, 'uni34.ogame.de', 80, nil, nil, INTERNET_SERVICE_HTTP, 0, 1);
// Открываем запрос
hRequest := HttpOpenRequest(hConnect, 'POST', 'game/reg/login2.php', nil, nil, PChar(accept), 0, 1);
// Отправляем запрос
HttpSendRequest(hRequest, PChar(content), Length(content), PChar(data), Length(data));
// Читаем ответ сервера
Memo1.Lines.Clear;
repeat
FillMemory(buffer, 512, 0);
InternetReadFile(hRequest, buffer, 512 - 1, bytesRead);
Memo1.Lines.Text := Memo1.Lines.Text + Trim(String(buffer));
until bytesRead = 0;
// Освобождаем память
FreeMem(buffer);
end;
В этой процедуре мы сначала устанавливаем размер буфера, имя пользователя и пароль, а также заголовки и данные запроса. Затем мы устанавливаем сеанс и подключаемся к серверу с помощью InternetOpen и InternetConnect. После этого мы открываем запрос с помощью HttpOpenRequest и отправляем его с помощью HttpSendRequest.finally, мы читаем ответ сервера с помощью InternetReadFile и выводим его в Memo1.
Обратите внимание, что в данном примере мы используем встроенные функции Windows для отправки POST-запроса. Это может быть полезно, если вам нужно выполнить веб-запрос без использования дополнительных библиотек, таких как Indy. Однако, использование библиотек, таких как Indy, может упростить работу с веб-запросами и предоставить больше возможностей для настройки и personnalization.
Пример кода на Delphi 2010 для выполнения веб-запроса POST без использования библиотек, таких как Indy, с помощью встроенных функций Windows, таких как WinInet.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS