2015-07-10 68 views
0

创建的HttpWebRequest我需要发送的HttpWebRequest到URL的电子邮件和密码特殊的HTML输入

<input name="Login[email]" id="Login_email" type="text" /> 
<input name="Login[password]" id="Login_password" type="password" /> 
<input type="hidden" value="f3b0997e3b6451ecee2840f353b3cf9a69805596" name="fs_csrf" /> 

如何与电子邮件,密码和隐藏输入栏上面的服务器端创建的HttpWebRequest。 请多关照

回答

0

试试这个:

//getting the hash 
var req = (HttpWebRequest)WebRequest.Create("https://example.com/login"); 
var cookies = new CookieContainer(); 
req.CookieContainer = cookies; 
string fs_csrf; 
using (var res = req.GetResponse()) 
using (var resStream = res.GetResponseStream()) 
using (var reader = new StreamReader(resStream)) { 
    fs_csrf = new Regex("input.*?hidden.*?value=\"(.*?)\"").Match(reader.ReadToEnd()).Groups[1].Value; 
} 
//submitting form 
req = (HttpWebRequest)WebRequest.Create("https://example.com/login"); 
req.CookieContainer = cookies; 
req.Method = "POST"; //i assume it's a post request 
var buffer = Encoding.UTF8.GetBytes("Login[email]=theemail&Login[password]=thepswd&fs_csrf=" + fs_csrf); 
req.ContentLength = buffer.Length; 
using (var reqStream = req.GetRequestStream()) { 
     reqStream.Write(buffer, 0, buffer.Length); 
} 
using (var res = req.GetResponse()) 
using (var resStream = res.GetResponseStream()) 
using (var reader = new StreamReader(resStream)) { 
    var respStr = reader.ReadToEnd(); 
} 
+0

谢谢wiou,这个伟大的 – mrlive