首先,请原谅我如果我误解了一些概念,因为网页请求和cookie不是我的堡垒。
嗯,问题是我希望将当前网址中存储在 WebBrowser 会话中的所有Cookie。这将帮助我,例如在交互式登录网站后,我可以从WebBrowser实例检索cookie,以便在后台使用 HttpWebRequest 类。 (该网站有安全措施,如验证码和随机问题,所以对我来说尝试自动使用后台登录和存储cookie的请求是不可行的,我更喜欢使用webbrowser)
这是我到目前为止所尝试的,似乎它工作正常,但我不确定我是否做到这一切都没有错过任何重要的事情要考虑,我认为我的方法似乎有点肮脏的解决方案,我的意思是可能存在直接的方法从 WebBrowser 控件的抽象层获取...
$data = array(
'ID1' => array('Column 1', 'Cell 1', 'Cell 2', 'Cell3')
'ID2' => array('Column 2', 'Cell 1', 'Cell 2', 'Cell3'),
'ID3' => array('Column 3', 'Cell 1', 'Cell 2'),
);
所以,我的问题是:我的方法一切正常吗?如果不是那么哪种方法可以做到这一点?
PS:我知道 WebBrowser 是 Internet Explorer 的嵌入式实例,但我不确定<HideModuleName>
Public Module WebBrowserExtensions
<Extension>
<DebuggerStepThrough>
Public Function GetCookieContainer(ByVal wb As WebBrowser) As CookieContainer
Dim uri As Uri = wb.Url
Dim cookieContainer As New CookieContainer()
Dim cookies As String() = wb.Document.Cookie.Split({";"c}, StringSplitOptions.None)
For Each cookie As String In cookies
Dim name As String = cookie.Substring(0, cookie.IndexOf("="c)).TrimStart(" "c)
Dim value As String = cookie.Substring(cookie.IndexOf("="c) + 1)
cookieContainer.Add(uri, New Cookie(name, value, "/", uri.Host))
Next cookie
Return cookieContainer
End Function
End Module
如何管理Cookie,我表示cookie仅在当前应用程序或 WebBrowser 实例的生命周期内持续存在,或者只是cookie存储在系统中且与 Internet Explorer 使用的cookie相同。正如我所说,对不起,如果我误解了一些概念。