私がやろうとしているのは、Web サイトにログインしてから POST 要求を行うことです。Webブラウザを作成し、そこにログインして、ボタンでPOSTデータを送信しようとしました。webbrowser1 経由で送信されていないため、または POST データを正しく送信していないため、このように機能していないかどうかはわかりません。POST データを送信するコードは次のとおりです。
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("url");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string postData = "postdata";
req.ContentLength = postData.Length;
StreamWriter stOut = new
StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(postData);
stOut.Close();
また、あるボタンでログインしてから別のボタンでログインして、この POST データを送信しようとしましたが、問題は、POST リクエスト内に CSRF トークンが必要なことです。これが私がこれまでに持っていたものです。
string formUrl = "loginurl";
string formParams = string.Format("username={0}&password={1}&csrfmiddlewaretoken={2}", "user", "pass", "token");
string cookieHeader;
WebRequest req = WebRequest.Create(formUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];
これを行う最良の方法は何ですか?ありがとうございました!