我正在为我的妹妹写一个程序,她在网上玩这个游戏。它使用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
答案 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。最终你只是将一个字符串从一个程序转移到另一个程序,你只需要确保它的格式正确。