所以我要做的是登录网站,然后发出POST请求。我试过制作一个webbrowser,只需登录,然后用按钮提交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"];
这样做的最佳方法是什么?谢谢!
答案 0 :(得分:0)
您可以尝试绑定到jquery中的“ajax:before”事件,以便在发送之前透明地添加CSRF令牌的参数。如何添加CSRF令牌取决于您正在使用的Web框架。