>我想在循环中为浏览器游戏POST
一个WebRequest
,因为POST
内容包含一个数字。现在我有一个冻结的程序。
这是我的代码:
String loginData = "login";
// Set Cookie
CookieContainer cookieContainer = new CookieContainer();
// Login
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("URL");
req.CookieContainer = cookieContainer;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] loginDataBytes = encoding.GetBytes(loginData);
req.ContentLength = loginDataBytes.Length;
Stream stream = req.GetRequestStream();
stream.Write(loginDataBytes, 0, loginDataBytes.Length);
stream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
// Start the Loop
for (int i=1; i < 10; i++)
{
String Friendly = "frday=" + i;
req = (HttpWebRequest)HttpWebRequest.Create("URL");
req.CookieContainer = cookieContainer;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] Fr = encoding.GetBytes(Friendly);
req.ContentLength = Fr.Length;
Stream stream = req.GetRequestStream();
stream.Write(Fr, 0, Fr.Length);
stream.Close();
Console.WriteLine("FriendlyNr: " + i);
}
输出是:
友好号码: 1
而浏览器游戏只有一个帖子内容。
所以第一次运行工作,但第二次运行不起作用。程序冻结在
Stream stream = req.GetRequestStream();
我想循环 10 次。如何实现?
您使用的是相同的Stream
对象 - 每次都需要使用新HttpRequest
。 看看这里,看看一个潜在的解决方案。 确保同时关闭Stream
对象。
此外,将代码放在 using 语句(如 using (var requestStream = request.GetRequestStream())
)中将有助于确保正确释放和收集对象。