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

POST - запрос средствами CppWebBrowser

28.06.2012, 18:53. Показов 2328. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать POST-запрос с помощью CppWebBrowser?
Есть такой код отсюда How to post data using TCppWebBrowser in C++Builder, но он не компилируется, жалуется на строчку
TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
с сообщением TVariant не может инициализироваться через {}. Что ему не хватает, как их правильно инициализировать эти TVariant?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void WebPostData(TCppWebBrowser *CppWebBrowser, String sURL, String sPostData)
{
  BSTR bstrHeaders = NULL;
  TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
  LPSAFEARRAY psa;
  LPCTSTR cszPostData = sPostData.c_str();
  UINT cElems = lstrlen(cszPostData);
  LPSTR pPostData;
  LPVARIANT pvPostData;
 
  bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencodedrn");
  if (!bstrHeaders){
    Application->MessageBox("Could not allocate bstrHeaders", "Warning", MB_OK | MB_ICONWARNING);
    return;
  }
 
  V_VT(&vHeaders) = VT_BSTR;
  V_BSTR(&vHeaders) = bstrHeaders;
 
  pvPostData = vPostData;
 
  if(pvPostData){
    VariantInit(pvPostData);
 
    psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
    if(!psa){
      return;
    }
 
    SafeArrayAccessData(psa, (LPVOID*)&pPostData);
    memcpy(pPostData, cszPostData, cElems);
    SafeArrayUnaccessData(psa);
 
    V_VT(pvPostData) = VT_ARRAY | VT_UI1;
    V_ARRAY(pvPostData) = psa;
  }
 
   CppWebBrowser->Navigate((TVariant)sURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
}
 
// Вызов функции
WebPostData(CppWebBrowser1, "http://mysite.com/news.php", "id=3&pass=dfgdf");
Добавлено через 4 часа 41 минуту
Сам спросил, сам отвечаю. Нашел на delphigroups.info этот простой и рабочий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
AnsiString asPostData = "login=Coder&pass=AseFat";
LPSAFEARRAY psa = SafeArrayCreateVector(VT_UI1, 0, asPostData.Length());
if( psa )
    {
    void *pvdata = NULL;
    SafeArrayAccessData(psa, &pvdata);
    memcpy(pvdata, asPostData.c_str(), asPostData.Length());
    SafeArrayUnaccessData(psa);
    TVariant vPostData(psa);
    TVariant vURL = AnsiString("http://mysite.com/login.php");
    TVariant vContentType = AnsiString("Content-Type: application/x-www-form-urlencoded\r\n");
    CppWebBrowser1->Navigate2(&vURL, TNoParam(), TNoParam(), &vPostData, &vContentType);
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2012, 18:53
Ответы с готовыми решениями:

POST Запрос через CppWebBrowser
Собственно САБЖ, не пойму как проводить запрос через CppWebBrowser методом POST... Пишу на билдере 6 Кто знает помогите... ...

Как распечатать содержимое CppWebBrowser'a средствами Builder'a?
Уважаемые коллеги! Подскажите пожалуйста, как распечатать содержимое CppWebBrowser'a средствами Builder'a.

User-Agent, Как перехвать запрос CppWebBrowser и послать со своим конфигом???
Все мы знаем, что когда браузер посылает запрос, то он + посылает инфу о типе браузера + еще там тра - ля - ля. Вот только как сделать,...

1
0 / 0 / 1
Регистрация: 11.06.2012
Сообщений: 40
28.06.2012, 22:05
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void WebPostData(TCppWebBrowser *CppWebBrowser, String sURL, String sPostData)
{
  BSTR bstrHeaders = NULL;
  TVariant vFlags = Variant(0);
  TVariant vTargetFrameName=Variant(0);
  TVariant vPostData=Variant(0);
  TVariant vHeaders=Variant(0);
  LPSAFEARRAY psa;
  LPCTSTR cszPostData = sPostData.c_str();
  UINT cElems = lstrlen(cszPostData);
  LPSTR pPostData;
  LPVARIANT pvPostData;
 
  bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencodedrn");
  if (!bstrHeaders){
    Application->MessageBox("Could not allocate bstrHeaders", "Warning", MB_OK | MB_ICONWARNING);
    return;
  }
 
  V_VT(&vHeaders) = VT_BSTR;
  V_BSTR(&vHeaders) = bstrHeaders;
 
  pvPostData = vPostData;
 
  if(pvPostData){
    VariantInit(pvPostData);
 
    psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
    if(!psa){
      return;
    }
 
    SafeArrayAccessData(psa, (LPVOID*)&pPostData);
    memcpy(pPostData, cszPostData, cElems);
    SafeArrayUnaccessData(psa);
 
    V_VT(pvPostData) = VT_ARRAY | VT_UI1;
    V_ARRAY(pvPostData) = psa;
  }
 
   CppWebBrowser->Navigate((TVariant)sURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2012, 22:05
Помогаю со студенческими работами здесь

Отправить Post-запрос средствами XNet
Доброго суток всем. Проблема с отправлением post-запроса, средствами xNet. Нужно отправить заполненную форму, в формате: ...

Отправить Post запрос средствами JavaScript
Собственно сабж. Пробовал сделать втупую: <form id = 'manForm' action = 'man.php' method = 'post' hidden = 'true'> <input...

POST запрос средствами java без php
Можно ли отправить какой-либо POST запрос другому сайту исключительно средствами javascript без применения php?

Не получается осуществить POST запрос, средствами jquery
В общем ситуация такая, делаю такой POST запрос: $.post('script.php',{ }, get_user_list ); function...

Post-посылка средствами ASP
Есть ли какие ли бо средства, ActiveX DLL и тд, с помощью которых я могу послать данные по методу POST на определенный ASP скрипт. То есть:...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru