HTTPWebRequestを使用して、WebサイトにログインするためのPOSTリクエストをシミュレートしています。しかし、Firebugを使用してログイン中にブラウザが何をしているかを追跡すると、そのログイン後にいくつかのGetRequestが作成されることがわかります。
だから私が探しているのは、POSTリクエストにそのGETリクエストを自動的に実行させる方法ですか?
誰かが私にJS関数を使うように言ったが、私はこれについて全く無知である。
private static async Task<byte[]> LoginAsync(string username, string password)
{
var postData = new NameValueCollection();
var uri = new Uri(string.Format("http://{0}/", ServerName));
postData.Add("name", username);
postData.Add("password", password);
postData.Add("login", ParseLoginId(await GetPage("login.php")));
return await HttpHandler.UploadValuesTaskAsync(uri, postData);
}
マイHTTPハンドラー
private CookieContainer _mContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _mContainer;
}
return request;
}
public void ClearCookies()
{
_mContainer = new CookieContainer();
}
上記のコードを使用してPOSTリクエストを送信していますが、問題はブラウザの動作を完全にシミュレートしていないため、ログイン後に必要なGETリクエストを自動的に送信しないことです。