[英]Can I do method 'Get' then 'Post' in a HTTPWebRequest?
首先,我对英语能力表示歉意。
目标:我想将数据发布到登录网站。 但是数据包含一个我必须从网站获取的值 (刷新网站后该值不同)。 因此,我先执行'GET'方法,然后获取值 ,然后执行'POST'方法,并收到错误消息'开始写入后无法设置此属性'。 在“内容长度”中
我的代码:
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");
请帮我T_T
您正在收到该错误,因为请求类型Get不能具有主体。
您应该通过调用HttpWebRequest
Create
方法来创建另一个请求对象,然后使用该对象发布数据。
HttpWebRequest anotherWR = HttpWebRequest.Create("https://www.fshare.vn/login") as HttpWebRequest;
anotherWR.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36";
anotherWR.Method = "POST";
anotherWR.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
anotherWR.KeepAlive = true;
anotherWR.ContentType = "application/x-www-form-urlencoded";
Stream stream = wr.GetRequestStream();
stream.Write(postDatabyte, 0, postDatabyte.Length);
stream.Close();
...
...
...
//and your logic...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.