HttpWebRequest,WebBrowser和cookies? (visual basic 2010)

时间:2011-08-26 00:29:27

标签: vb.net cookies httpwebrequest browser

我正在为我的妹妹写一个程序,她在网上玩这个游戏。它使用WebBrowser控件和HttpWebRequest。

基本功能是在网站上搜索,我们会说网址是http://hersite.com/pet/ *(不要点击链接,这只是一个例子)其中*是一个数字,这是它搜索的方式。 我使用for循环来循环从指定的开始到结束的数字,并使用httpwebrequest获取html代码,然后使用InStr和.split()处理字符串

当我使用WebRequest.Navigate访问网页时,它会正确地转到我的页面。但是,如果我通过HttpWebRequest获取源代码,它会获取登录页面的来源,如果您没有登录,网站会将您重新启动。

有没有办法将Cookie从WebBrowser转移到我的HttpWebRequest?

我希望这很清楚。

一些例子:

获取HTML 在这里的某个地方我需要将cookie添加到http请求者,不是吗?

函数GetHTML(ByVal strPage As String)As String         Dim strReply As 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

2 个答案:

答案 0 :(得分:0)

您有什么问题如何在您的http请求中获取或设置cookie?

好吧,如果问题是如何设置,你可以这样做:

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

但是,如果是后者:

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

答案 1 :(得分:0)

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