First, I apologize for the english ability ^^
target: I want POST a data to a Login website. but the data contain a value (the value different after refresh website) that i must GET from website. So, i do 'GET' method first, and get the value, then i do 'POST' method & i get the error 'This property cannot be set after writing has started.' in 'content-length'
My code:
HttpWebRequest wr = HttpWebRequest.Create("https://www.fshare.vn/login") as HttpWebRequest;
wr.KeepAlive = true;
// get the value
HttpWebResponse wrep = wr.GetResponse() as HttpWebResponse;
Stream streamReponse = wrep.GetResponseStream();
StreamReader reader = new StreamReader(streamReponse);
string httpDoc = reader.ReadToEnd();
string fs_csrt = getfs_csrf(httpDoc);
wr.CookieContainer = new CookieContainer();
wr.CookieContainer.Add(wrep.Cookies);
reader.Close();
streamReponse.Close();
wrep.Close();
// Post into website
string postDataString = @"POST /login fs_csrf={0}
&LoginForm%5Bemail%5D=abcd%40yahoo.com.vn
&LoginForm%5Bpassword%5D=abcd
&LoginForm%5Bcheckloginpopup%5D=0
&LoginForm%5BrememberMe%5D=0
&yt0=%C4%90%C4%83ng+nh%E1%BA%ADp
";
postDataString = string.Format(postDataString, fs_csrt);
MessageBox.Show("I will post: " + postDataString);
byte[] postDatabyte = Encoding.ASCII.GetBytes(postDataString);
wr.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36";
wr.Method = "POST";
wr.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
wr.KeepAlive = true;
wr.ContentType = "application/x-www-form-urlencoded";
//wr.ContentLength = postDatabyte.Length;
Stream stream = wr.GetRequestStream();
stream.Write(postDatabyte, 0, postDatabyte.Length);
stream.Close();
// get the result
HttpWebResponse wrep2 = wr.GetResponse() as HttpWebResponse;
Stream streamReponse2 = wrep2.GetResponseStream();
StreamReader reader2 = new StreamReader(streamReponse2);
string httpDoc2 = reader2.ReadToEnd();
Clipboard.SetText(httpDoc2);
MessageBox.Show("Post done");
Please help me T_T