如何使用接口函数Navigate2实现POST方式传数据?

charmfox 2002-04-16 03:35:26
有一个com实现的是IE的工具条band,遇到了问题,
已经取到了IWebbrower接口,希望使用Navigate2实现POST访问.

const TCHAR g_WebSite[]=_T("http://mail.somecompany.com/");
const TCHAR g_User[]=_T("cgi-bin/login?UserName=somebody&PassWord=key");

在消息响应中如下:
_variant_t varEmpty;
_variant_t varURL;
_variant_t varPostData;
varURL=_bstr_t(g_WebSite);
varPostData=_bstr_t(g_User);
m_pBand->m_pIE->Navigate2(&varURL,&varEmpty,&varEmpty,&varPostData,&varEmpty);

然而,当使用Navigate2传数据时,却是使用GET方法.

另:在CHtmlView中,我是用成员函数Navigate2传输POST方式数据却是可以的.

看了半天msdn关于VARIANT的说明,都没明白.不知道如何传字符串?
高手给帮个忙吧.
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
charmfox 2002-04-24
  • 打赏
  • 举报
回复
ultraboy的方法,我也使用了,不行。

我仔细看了一下msdn文档,放弃了_variant_t,直接使用了VARIANT,使用VariantInit初始化,然后将其类型设为VT_ARRAY|VY_UI1,同时使用了一个安全数组SAFEARRAY,将字符串一个一个传入安全数组中,将VARIANT变量的parray指向安全数组,这样就可以了。不过好费事,谁有简单的办法?

呵呵,现在可以实现类系与Google Toolbar的功能了。
ultraboy 2002-04-21
  • 打赏
  • 举报
回复
URL应该是http://mail.somecompany.com/cgi-bin/login,POSTDATA是UserName=somebody&PassWord=key
albertjin123 2002-04-19
  • 打赏
  • 举报
回复
你应该用IWebBrowser2的其它借口,比如XXXStream 之类的
charmfox 2002-04-19
  • 打赏
  • 举报
回复
我自己找到了,PostData必须为一个数组指向SAFEARRAY结构,并且SAFEARRAY数组中,每个成员的类型必须是VT_UI1,还要是一维的。

并且数组计数为PostData中字符长度。

这样就可以实现像Google Toolbar类似的IE工具条插件了。
charmfox 2002-04-18
  • 打赏
  • 举报
回复
什么意思?
xiaosun 2002-04-17
  • 打赏
  • 举报
回复
sunshineormer@msn.com我给你回答

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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