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);
Пример отправки post через webBrowser->Navigate
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "a=1&b=2" по адресу "http://site.ru/post.php".
Цитата: Dedignat
Здравствуйте!
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "a=1&b=2" по адресу "http://site.ru/post.php".
Я новичок в Си и Си++.
Подскажите, пожалуйста, рабочий пример использования сабжа.
Например, нужно отправить данные "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"); А вообще это зависит от настроек веб-сервера и не всегда в качестве разделителя используется &.
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]Примерно так:
Код:
Уточню свой вопрос: объект 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"
);
"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"
);
webBrowser1->Navigate(
"http://site.ru/post.php",
"_self",
arr,
"Content-Type: application/x-www-form-urlencoded"
);
Функция:
Код:
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;
}
{
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, но если у кого-то возникнет такой же вопрос, то он сможет найти хоть какое-то решение.
Вопрос все еще открыт...
Код:
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"
);
"http://site.ru/post.php",
"_self",
System::Text::ASCIIEncoding::ASCII->GetBytes("a=1&b=2"),
"Content-Type: application/x-www-form-urlencoded\r\n"
);
Вопрос закрыт, спасибо всем, кто пытался помочь.