Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 29

Отправка POST запроса компонентом IdHTTP

25.06.2016, 17:37. Показов 8840. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Решаю простенькую задачку! Есть файл index.php. Там описана форма, состоящая из текстового поля и кнопки submit. При нажатии на кнопке сервер выводит строку, введённую в тестовое поле! Мне нужно из моей программы на C++ Builder послать POST запрос, т.е аналог нажатия кнопки sumbit в браузере.
Вот код!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString url = "http://127.0.0.1/klient/index.php";
TStringStream *stream = new TStringStream(NULL);
 
TStringList *List = new TStringList;
List->Add("Fam=boek");
 
    try
     {
       IdHTTP1->Post(url,List,stream);
     }
catch(EIdException &E)
  {
     Memo1->Text = "Ошибка:\n"+E.Message;
  }
  Memo1->Text = stream->DataString;
  delete stream;
  delete List;
}
Но в Memo1 выводится код страницы, такой, если бы была не нажата кнопка submit, т.е не выполнен POST-запрос. В чём моя ошибка? Спасибо большое!
Привожу код файла страницы:
HTML5
1
2
3
4
5
6
7
8
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<title>Клиент-сервер</title>
</head>
 
<body>
PHP
1
2
3
4
5
6
7
8
9
10
  <?php
        echo "<form method=post name=form1 action=index.php>
            <input type=text maxlength=45 name=Fam>
           <input type=submit >
       </form>
        ";
 if ($_POST!=NULL)
echo $_POST['Fam']."<br>";
print_r($_POST);
 ?>
HTML5
1
2
</body>
</html>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2016, 17:37
Ответы с готовыми решениями:

Кодировка в теле POST-запроса (idHTTP)
Добрый день. Помогите люди добрые, уже не знаю куда бежать, весь инет перерыл. Вот простенький код: TStringStream * str; String...

Отправка запроса Post для загрузки картинки на сайт
Уже около 6 часов шерстю интернет в поисках ответа, но так ничего и не могу найти. Делал все по примеру запроса браузера. Отправляю...

IdHttp::Post()
Люди, хелп! пытаюсь зарегится на сайте с помощью IdHttp-&gt;Post()....сервер идет в отказ, думаю дело в кукиксах корорые я .. подключил....

5
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
26.06.2016, 06:59
работу скрипта проверяли?
вообще все верно вроде у вас, так делаю я.

C++
1
2
3
4
5
TStringStream *respon = new TStringStream();
TStringList *post= new TStringList("");
post->Add(UnicodeString("param1=")+UnicodeString(Edit1->Text));
post->Add(UnicodeString("param2=")+UnicodeString(Edit2->Text));
IdHTTP1->Post(host+"slogin.php",post,respon);

у вас в скрипте видимо все же ошибка, либо в ответ приходит содержимое если скажем на сервере Php вовсе не установлен, могу ошибатся...
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 29
26.06.2016, 12:05  [ТС]
Да! Работу скрипта проверял как в браузере, так и через C++ Builder отправкой GET-запроса! (ну естественно поменяв код в PHP на метод GET и использование массива $_GET). Всё корректно работало! А вот с POST какая-то неувязочка!

Добавлено через 9 минут
А для чего вы используете UnicodeString? Спасибо!
0
191 / 52 / 19
Регистрация: 18.02.2013
Сообщений: 508
Записей в блоге: 9
26.06.2016, 12:24
AlexXXX_96, а ты сниффером смотрел, какие пакеты отправляются?

Добавлено через 1 минуту
https://www.cyberforum.ru/blog... og608.html
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 29
26.06.2016, 12:37  [ТС]
Вот скрин программы Charles!
Миниатюры
Отправка POST запроса компонентом IdHTTP  
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 29
26.06.2016, 13:43  [ТС]
Это код в C++ Builder. В RichEdit лежит "Fam=boek"
C++
1
2
3
4
5
6
AnsiString url = "http://127.0.0.1/klient/index.php";
TStringStream *stream = new TStringStream(NULL);
       IdHTTP1->Post(url,RichEdit1->Lines,stream);
  Memo2->Text = "Всё гут";
  Memo1->Text = stream->DataString;
  delete stream;
Это код php-скрипта, выполняющегося на сервере!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
  <?php
        echo "<form method=post name=form1 action=index.php>
            <input type=text maxlength=45 name=Fam>
           <input type=submit>
       </form>
        ";
 if ($_POST!=NULL)
echo $_POST['Fam']."<br>";
 else
echo "Всем привет!!!";
print_r($_POST);
 ?>
При отправке POST-запроса через C++ Builder в Memo1 выводится код страницы, где написано "Всем привет", т.е массив $_POST =NULL. Значит ошибка в отправке запроса! Что необходимо исправить?

Добавлено через 47 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString url = "http://127.0.0.1/klient/index.php";
TStringStream *stream = new TStringStream(NULL);
TStringList *List = new TStringList;
List->Add("Fam=Boykow");
 
//Ïàðàìåòðû çàïðîñà
//IdHTTP1->Host = "127.0.0.1";
//IdHTTP1->Request->ContentLength = 7;
//IdHTTP1->Request->Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
//IdHTTP1->Request->Referer = "http://127.0.0.1/klient/";
//IdHTTP1->Request->AcceptEncoding = "gzip, deflate";
//IdHTTP1->Request->AcceptLanguage = "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4";
IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
 
       IdHTTP1->Post(url,List,stream);
  Memo2->Text = "Всё гут!";
  Memo1->Text = stream->DataString;
  delete stream;
  delete List;
}
Это код, который заработал! Получается для корректного запроса достаточно указать ContentType?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2016, 13:43
Помогаю со студенческими работами здесь

IdHTTP - ошибка Get запроса
Всем доброго времени суток. В общем, что бы не расписывать свою проблему, приложу скриншот (слева, в МЕМО, тот вариант, который должен...

IdHTTP - Ошибка при отправке запроса
Всем привет, у меня возникла небольшая проблема. Решил научится работать с API и тп, но вот во незадача пытаюсь я отправить запрос с...

IdHTTP POST запрос. Как получить содержимое ответа переданное в окно?
Посылаю post на авторизацию, возвращается заглавная страница с подтверждением. Все ок. Далее посылаю get и обрабатываю их ответы. Все ок....

Компонент IdHTTP - данные авторизации магическим образом изымаются из запроса
Здравствуйте! Ниже приведен код запроса картинки у камеры: TFileStream* FILE_STREAM = new...

Отправка post информации (картинка)
Перед написанием программы я сниффлю и я вижу: http://screenshot.ru/B2g Затем пишу такой код. void __fastcall...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru