有关于微软的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
news:9d9iud$sf9$1@bob.news.rcn.net...
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.
總結
以上是生活随笔為你收集整理的有关于微软的IWebBrowser2::Navigate2/Navigate方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关于JAVA与后端C应用UTF8字符的
- 下一篇: 说说BES