2011-08-26 158 views
0

我正在为我的姐姐编写一个程序,用于玩她在线玩的游戏。它使用WebBrowser控件和HttpWebRequest。HttpWebRequest,WebBrowser和cookie? (visual basic 2010)

它的基本功能是通过网站搜索,我们会说网址是http://hersite.com/pet/ *(不要跟随链接大声笑它只是一个例子)其中*是一个数字,这就是它的搜索方式。 我使用for循环从指定的开始到结束循环数字,并使用httpwebrequest获取html代码,然后使用InStr和.split()处理字符串。当我使用WebRequest访问网页时导航,它将我带到正确的页面。但是,如果我通过HttpWebRequest获取源代码,它将获取登录页面的来源,如果您未登录,该网站会将您重定向到登录页面。

是否有将cookie从WebBrowser传输到我的HttpWebRequest的?

我希望这很清楚。

一些例子:

获取HTML 某处这里我需要将Cookie添加到HTTP请求,不要我?

功能GetHTML(BYVAL strPage作为字符串)作为字符串 昏暗strReply的String = “NULL”

Try 
    Dim objHttpRequest As System.Net.HttpWebRequest 
    Dim objHttpResponse As System.Net.HttpWebResponse 
    Dim uri As New Uri(strPage) 

    objHttpRequest = System.Net.HttpWebRequest.Create(strPage) 


    objHttpResponse = objHttpRequest.GetResponse 
    Dim objStrmReader As New StreamReader(objHttpResponse.GetResponseStream) 

    strReply = objStrmReader.ReadToEnd() 

    Catch ex As Exception 
    strReply = "ERROR! " + ex.Message.ToString 
    End Try 

    Return strReply 

End Function 

回答

0

什么是你的问题是如何获取或在HTTP请求中设置的Cookie?

那么,如果问题是如何设定,可以让这个:

objHttpRequest.Headers["Cookie"] = "baa"; 

,但如果是后者:

使用的tcpdump或者Wireshark的或一些其他类似的工具来捕获网络流量并查看代码发送到服务器的确切内容以及服务器返回的响应内容。 如果您获得成功,请发送http请求登录页面 - >发送登录名和密码(例如) ,服务器将响应头中的cookie返回。 将响应中的标签Cookie分开,并如上所述在您的http请求中进行设置。

+0

这是我正在寻找的东西,但代码行不是VB,我猜C?但是,我得到你的要求。我问的是如何将WebBrowser1.Document.Cookies转换成objHttpRequest cookie以及允许httprequest访问页面的天气。谢谢。 另外,也许一些代码示例,我会发现与wireshark的网络流量后,我会做什么?最后,我可以做些什么吗? – BrianBTB

0

所以你试图在WebBrowser控件和HttpWebRequest对象之间共享cookies?前者实际上使用系统的Cookie(Internet Explorer的技术),因此访问它们可能会带来安全风险。这就是说,有一种方法。检查出this post。它在C#中,但你应该能够很容易地将其转换为VB。你会看到一个P/Invoke来访问安全的cookie。最终你只是将一个字符串从一个程序转移到另一个程序,你只需要确保它的格式正确。