Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пример отправки post через webBrowser->Navigate

37K
07 августа 2008 года
Dedignat
13 / / 29.06.2008
Здравствуйте!
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "a=1&b=2" по адресу "http://site.ru/post.php".
288
08 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: Dedignat
Здравствуйте!
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "a=1&b=2" по адресу "http://site.ru/post.php".



Если вы используете webBrowser->Navagate, то по-моему вам в тему Borland C++ Builder. А вообще в большинстве случаев webBrowser->Navagate(L"http://site.ru/post.php?a=1&b=2"); А вообще это зависит от настроек веб-сервера и не всегда в качестве разделителя используется &.

1.9K
08 августа 2008 года
max_dark
256 / / 11.11.2005
[QUOTE=nikitozz]Если вы используете webBrowser->Navagate, то по-моему вам в тему Borland C++ Builder. А вообще в большинстве случаев webBrowser->Navagate(L"http://site.ru/post.php?a=1&b=2"); А вообще это зависит от настроек веб-сервера и не всегда в качестве разделителя используется &.[/QUOTE]

IWebBrowser - это интерфейс к IE. Может использоватся в разных библиотеках(в MFC - тем более).
webBrowser->Navagate(L"http://site.ru/post.php?a=1&b=2"); - это GET запрос, не в тему
[QUOTE=Dedignat]Здравствуйте!
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "a=1&b=2" по адресу "http://site.ru/post.php".[/QUOTE]Примерно так:
 
Код:
VARIANT vEmpty;
VARIANT post;
VariantInit(&vEmpty);
VariantInit(&post);
post.vt=VT_BSTR;
post.bstrVal=SysAllocString("a=1&b=2");
webBrowser->Navagate(L"http://site.ru/post.php",  &vEmpty, &vEmpty, &post, &vEmpty);
Более подробно по теме site:msdn.microsoft.com "IWebBrowser"
288
08 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: max_dark
IWebBrowser - это интерфейс к IE. Может использоватся в разных библиотеках(в MFC - тем более).



Понятно. Что-то я о нем и не подумал.

Цитата: max_dark

webBrowser->Navagate(L"http://site.ru/post.php?a=1&b=2"); - это GET запрос, не в тему



А вот с этим действительно затупил.

37K
08 августа 2008 года
Dedignat
13 / / 29.06.2008
max_dark, уверен - вариант, предложенный Вами пригодится кому-нибудь (возможно и мне в дальнейшем), но, как я понимаю, в моем случае нужен другой код.
Уточню свой вопрос: объект webBrowser добавлен с помощью конструктора форм, соответственно имеет System.Windows.Forms.WebBrowser (проект Windows Forms Application).
Пробовал создать аналогичное приложение как C# Windows Application. Вот рабочий пример:
 
Код:
webBrowser1.Navigate(
 "http://site.ru/post.php",
 "_self",
 System.Text.ASCIIEncoding.ASCII.GetBytes("a=1&b=2"),
 "Content-Type: application/x-www-form-urlencoded"
);

Не понимаю политику Microsoft - искал много, но не смог найти рабочего примера ни на msdn, ни на сторонних сайтах.
На codenet.ru нашел код, который помог избежать ошибок на стадии компиляции, но все же post запрос не отправляется.
 
Код:
array<unsigned char>^ arr = System::Text::Encoding::GetEncoding(866)->GetBytes("a=1&b=2");
webBrowser1->Navigate(    
 "http://site.ru/post.php",
 "_self",
 arr,
 "Content-Type: application/x-www-form-urlencoded"
);
37K
11 августа 2008 года
Dedignat
13 / / 29.06.2008
К сожалению пока не получил ответа. Поэтому сделал через webBrowser->DocumentText.
Функция:
Код:
private: Void postThAss(System::Windows::Forms::WebBrowser^ wb, String^ url, String^ data)
{
    int i;
    String^ body = "";
    array<Char>^chars = {'&', '='};
    array<String^>^split = data->Split( chars );
    body = "<form name=\"postThAss\" method=\"post\" action=\"" +url+ "\" style1=\"display: none\">";
    for (i=0; i<split->Length; i+=2)
    {
        body += "<input name=\"" +split+ "\" value=\"" +split[i + 1]+ "\">";
    }
    body += "<input type=submit></form><script>document.forms.postThAss.submit(1);</script>";
    wb->DocumentText = body;
}

Вызов:
 
Код:
postThAss(webBrowser1, "http://site.ru/post.php", "a=1&b=2");

Способ а-ля through ass, но если у кого-то возникнет такой же вопрос, то он сможет найти хоть какое-то решение.
Вопрос все еще открыт...
37K
17 августа 2008 года
Dedignat
13 / / 29.06.2008
Всем привет! Решение вопроса:
 
Код:
webBrowser1->Navigate(
 "http://site.ru/post.php",
 "_self",
 System::Text::ASCIIEncoding::ASCII->GetBytes("a=1&b=2"),
 "Content-Type: application/x-www-form-urlencoded\r\n"
);

Вопрос закрыт, спасибо всем, кто пытался помочь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог