有关于微软的IWebBrowser2::Navigate2/Navigate方法

我曾经的要求很简单,只是要在我内置BROWSER发请求在在头里加入COOKIE值,

但试来试去都不成,但有趣的是的,我在头里加入其它东西是可行的,如:

User-Agent: NetMe

请求时加上了,可如果是:Cookie:aa=bb,就加不上,找了好多地方,想找到答案,

最后在GOOGLE论坛里有人做了“解释”:

它问了微软的人,用该控件无法加COOKIE,FT!!!

http://groups.google.com/group/microsoft.public.windows.inetexplorer.ie5.programming.components.webbrowser_ctl/browse_thread/thread/72f156bc95dfbe34/f3078180122c5529%23f3078180122c5529?sa=X&oi=groupsr&start=2&num=3

code:

CString str="";

 //this->m_editurl.GetWindowText(str);

 //this->m_editurl.GetWindowText("http://localhost:8080/angel");
 
 VARIANT varProject;
 const char *pszMsg = "http://127.0.0.1:8080";
 //const char *pszMsg1 = "User-Agent: NetAnts";
 const char *pszMsg1 = "Cookie: JSESSIONID=0112BF7D0C9FD914716EE17AD2AD7913";

 VARIANT p1;
 VARIANT p2;
 VARIANT p3;
 VariantInit(&varProject);
 VariantInit(&p1);
 VariantInit(&p2);
 VariantInit(&p3);

 p2.vt = VT_BSTR;
 p2.bstrVal = SysAllocString(A2BSTR(pszMsg));//_bstr_t("http://127.0.0.1:8080/angel");
 
 CString *s = new CString(p2.bstrVal);
 //AfxMessageBox((LPCTSTR)s);

 varProject.vt = VT_BSTR;
 p1.vt = VT_BSTR;
 p1.bstrVal= SysAllocString(A2BSTR(pszMsg));

 //CComBSTR bstrXml ;
 //bstrXml.Attach(SysAllocStringLen(p,47));

 //varProject.bstrVal = bstrXml;
 varProject.bstrVal = SysAllocString(A2BSTR(pszMsg1));

 this->m_ie.Navigate2(&p2,0,0,0,&varProject);

 

I'd like to add cookies when I call IWebBrowser2::Navigate.
For example:
    SHDocVw::IWebBrowser2Ptr spBrowser;//already created
     _variant_t vtEmpty;
     _bstr_t    bstrURL;// already set to valid URL;
    _variant_t vCookie(_bstr_t("Cookie: foo = bar"));

     spBrowser->Navigate
    (
        bstrURL,
        &vtEmpty/*flags*/,
        &vtEmpty/*frame*/,
        &vtEmpty/*post data*/,
        &vCookie/*headers*/
    );

The cookie I set does not appear on the server.  I assume that the
syntax I'm passing to the 'headers' argument of Navigate is incorrect,
but I see no documentation about exactly how to set 'headers'.

When I monitor the IE event BeforeNavigate2, it shows the 'header'
argument, which includes some garbled version of the characters I
put in vCookie.

Any help will be appreciated.

Thanks,

Paul Bradford

See RFC 2109. The óookie header is rather complex:

   cookie          =       "Cookie:" cookie-version
                           1*((";" | ",") cookie-value)
   cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
   cookie-version  =       "$Version" "=" value
   NAME            =       attr
   VALUE           =       value
   path            =       "$Path" "=" value
   domain          =       "$Domain" "=" value

For example:

Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"

$Version parameter is mandatory-- With best wishes,    Igor Tandetnik

"Paul Bradford" <paulbradf ...@alum.mit.edu> wrote in message

news:9d9iud$sf9$1@bob.news.rcn.net...

- Show quoted text -

- Show quoted text -

- Show quoted text -
I set a breakpoint in BeforeNavigate2 and look at Headers. It contains
some of the characters from the 'headers' parameter in my call to
IWebBrowser::Navigate, but it's all garbled.  There is something
about my 'headers' parameter to Navigate that is not correct, but
I don't know what.

What exactly should the 'headers' argument to IWebBrowser2::Navigate
look like?

In case anybody is interested, I went through Microsoft support
to find out more about this. Their answer: what I want to do is
not supported.  The 'headers' argument to Navigate/Navigate2
CANNOT be used to set cookies.  There is no way to set cookies
for an IWebBrowser2 object.

I consider this a bug, but what I think is unlikely to change anything :)

We solved my problem in a completely different way.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值