2017-01-31 7 views
0

POSTの内容に数字が含まれているため、POSTWebRequestのループゲームでブラウザゲームに使用します。今私は凍ったプログラムを持っています。c#HttpWebRequest "POST" with 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

そしてブラウザゲームが唯一のポストのコンテンツを持っ

は、ここに私のコードです。

最初の実行は機能していますが、2番目のルードは機能しませんでした。プログラムはフリーダイヤル

Stream stream = req.GetRequestStream(); 

私は10回ループしたいです。それを達成する方法?

答えて

0

同じStreamオブジェクトを使用しています。毎回新しいHttpRequestを使用する必要があります。潜在的な解決策を見るにはhereを見てください。 Streamオブジェクトも閉じていることを確認してください。

さらに、コードをusingステートメント(using (var requestStream = request.GetRequestStream())など)に入れると、オブジェクトが適切に処分され、適切に収集されるようになります。

+0

ありがとうございます<3それは私を助けました。 – Baumsi

+0

お手伝いいただきありがとうございます。また、Stack Overflowへようこそ!この回答または他の人があなたの問題を解決した場合は、他の人が将来それを見つけるのを助けるために、それを合格とマークしてください。ありがとう! – awh112