Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Shift
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 8
1

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

28.06.2012, 18:53. Просмотров 1463. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 18:53
Ответы с готовыми решениями:

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

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

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

POST запрос
Привет всем. Помогите отправит POST запрос. Нужно отправить файл flac в google speech api.. Вот...

POST запрос
Как отправить POST запрос на сайт?

1
Maximbl4
0 / 0 / 1
Регистрация: 11.06.2012
Сообщений: 40
28.06.2012, 22:05 2
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 22:05

Post запрос на сервер
Доброго дня.Программа не много не стандартная - но прошу помощи. Хочу накрутить количество...

Юникодный POST запрос
Здравствуйте. Отправляю POST запрос для авторизации в онлайн-игре, где можно использовать русские...

Парсер post/get запрос (WebBrowser)
Собственно, есть ли возможность отследить все запросы отправляемые путем (get,post) с браузера ? В...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru