VB.netWebClientにCookieを記憶させたいのですが。
私は多くのオーバーロードクラスを検索して試しました。
POSTを介してWebサイトにログインし、次にPOSTを別のページに移動して、セッションを保持したままコンテンツを取得したい。
これは、WebBrowserコントロールを使用せずにVB.netで可能ですか?
Chilkat.HTTPを試しましたが、機能しますが、.Netライブラリを使用したいと思います。
@Guffaが言うように、CookieContainerを格納するWebClientから継承する新しいクラスを作成します。これを実行し、リファラーを存続させるために使用するコードは次のとおりです。
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;
}
}
WebClientクラスにCookieを記憶させることはできません。応答からCookieコンテナを取得し、それを次のリクエストで使用する必要があります。