我想VB.net WebClient記住cookies。如何讓WebClient使用Cookie?
我已經搜索並嘗試了許多重載類。
我想通過POST登錄到網站,然後POST到另一個頁面並獲取其內容,同時仍保留我的會話。
這可能與VB.net不使用WebBrowser控件?
我試過Chilkat.HTTP,它可以工作,但我想使用.Net庫。
我想VB.net WebClient記住cookies。如何讓WebClient使用Cookie?
我已經搜索並嘗試了許多重載類。
我想通過POST登錄到網站,然後POST到另一個頁面並獲取其內容,同時仍保留我的會話。
這可能與VB.net不使用WebBrowser控件?
我試過Chilkat.HTTP,它可以工作,但我想使用.Net庫。
創建一個從WebClient繼承的新類,該WebClient存儲CookieContainer,如@Guffa所述。下面是我用的,做的代碼,也保留引薦活着:
Public Class CookieAwareWebClient
Inherits WebClient
Private cc As New CookieContainer()
Private lastPage As String
Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
Dim R = MyBase.GetWebRequest(address)
If TypeOf R Is HttpWebRequest Then
With DirectCast(R, HttpWebRequest)
.CookieContainer = cc
If Not lastPage Is Nothing Then
.Referer = lastPage
End If
End With
End If
lastPage = address.ToString()
Return R
End Function
End Class
這裏是上面的代碼中的C#版本:
using System.Net;
class CookieAwareWebClient : WebClient
{
private CookieContainer cc = new CookieContainer();
private string lastPage;
protected override WebRequest GetWebRequest(System.Uri address)
{
WebRequest R = base.GetWebRequest(address);
if (R is HttpWebRequest)
{
HttpWebRequest WR = (HttpWebRequest)R;
WR.CookieContainer = cc;
if (lastPage != null)
{
WR.Referer = lastPage;
}
}
lastPage = address.ToString();
return R;
}
}
會試試這個。謝謝。它類似於其他的繼承,然後重載類找到了。 – Jeremy 2010-05-14 10:05:58
我一直使用這個多年來絕對成功。如果它不適合你,那麼它不是一個cookie /會話問題,但可能是你正在蜘蛛網站使用JavaScript來修改表單狀態。如果是這種情況,請檢查javascript或僅使用數據包監視器或提琴手來查看實際上通過線路發送的內容。 – 2010-05-14 12:48:17
可以ne1發佈這在C#中,我的問題也類似,我發佈了一個問題,但我沒有得到ne相關的答案..仍然搜索答案.. – FosterZ 2010-12-16 14:18:53