2017-01-31 4 views
0

Я хотел сделать POST a WebRequest для браузера в цикле, потому что содержание POST содержит число. Теперь у меня есть замороженная программа.C# HttpWebRequest «POST» с Loop

Вот мой код:

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); 
} 

выводе является:

FriendlyNr: 1

И браузерной получил только один Post Content.

Итак, первый запуск работает, но второй из них не работает. Программа замерзает на

Stream stream = req.GetRequestStream(); 

Я хочу, чтобы петля 10 раз. Как это сделать?

ответ

0

Вы используете тот же объект Stream - вам нужно использовать новый HttpRequest каждый раз. Посмотрите here, чтобы увидеть потенциальное решение. Убедитесь, что вы также закрываете объект Stream.

Кроме того, размещение кода в операторе using, таком как using (var requestStream = request.GetRequestStream()), поможет убедиться, что объект удален и собран соответствующим образом.

+0

Спасибо. <3 Это мне очень помогло. – Baumsi

+0

Рад помочь, и добро пожаловать в переполнение стека! Если этот ответ или любой другой решают вашу проблему, отметьте его как принятый, чтобы помочь другим найти его в будущем. Благодаря! – awh112