关于CppWebBrowser的Post提交问题

realbay 2011-11-28 11:31:28
关于CppWebBrowser的Post提交问题,网上流传最广的代码是:
void __fastcall TForm1::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);
}


实际上其中的TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
不能通过编译,取消其初始化值后才能通过编译。

最过经过测试,这段代码只能向ASP的网页提交数据,而向PHP的网页提交时,收不到任何数据。
ASP和PHP都是自己写的,没有什么错误情况。

这是为什么?
...全文
141 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomstan 2014-05-08
  • 打赏
  • 举报
回复
兄弟,你太厉害了。。。
缘中人 2011-11-29
  • 打赏
  • 举报
回复
这中字符串错误,很不好查
realbay 2011-11-28
  • 打赏
  • 举报
回复
找到原因了,Content-Type: application/x-www-form-urlencodedrn
应该是Content-Type: application/x-www-form-urlencoded\r\n

代码是网上搜来的,某些二流论坛把一些字符过滤掉了,二流论坛害死人

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧