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

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

28.06.2012, 18:53. Показов 2371. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru