C#HttpWebRequest的许多要求

问题描述:

我有名单的字我需要把所有这个词上的WebRequest POST方法 喜欢这里: 此功能要求>C#HttpWebRequest的许多要求

private void RequesteUrl(string word) 
    { 
    // try 
     // { 


      CookieContainer WeBCookies = new CookieContainer(); 
      HttpWebRequest url = (HttpWebRequest)WebRequest.Create("http://mbc.com/index.php"); 
      url.Method = "POST"; 
      url.UserAgent = "Mozilla/5.0 (Windows NT 10.0; rv:44.0) Gecko/20100101 Firefox/44.0"; 
      url.Referer = "http://mbc.com/index.php?"; 

      var PostData = User.Text + "&password=" + word; 
      var Data = Encoding.ASCII.GetBytes(PostData); 
      url.ContentLength = Data.Length; 
      url.Host = "www.mbc.com"; 
      url.ContentType = "application/x-www-form-urlencoded"; 
      // url.Headers.Add(HttpRequestHeader.Cookie, webBrowser1.Document.Cookie); 
      url.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
      url.KeepAlive = true; 


      url.Headers.Add("Cookie: "+tryit); 
      using (var stream = url.GetRequestStream()) 
      { 
       stream.Write(Data, 0, Data.Length); 
      } 

      HttpWebResponse WebResponse = (HttpWebResponse)url.GetResponse(); 
      int status = (int)WebResponse.StatusCode; 
      Stream ST = WebResponse.GetResponseStream(); 
      StreamReader STreader = new StreamReader(ST); 
      string RR = STreader.ReadToEnd(); 


      // MessageBox.Show (status.ToString() + " " + word); 

    // } 
    // catch (Exception ex) 
    // { 
     //  MessageBox.Show(ex.Message); 
    // } 

    } 

,我用它来装载:

foreach (string selectword in Lists) 
     { 

      RequesteUrl(selectword); 
    } 

但是foreach没有完成所有列表,他只对列表做了两个!

是的,原因是你的请求完成后你没有释放资源。由于HTTP/1.1只允许每台服务器同时连接两个连接,所以在两次请求后,您将耗尽可用的连接。这就是它挂起的原因。

您需要关闭HttpWebResponse,也最好先关闭的StreamReader和流....

using(HttpWebResponse WebResponse = (HttpWebResponse)url.GetResponse()) 
{ 
      int status = (int)WebResponse.StatusCode; 

      using(Stream ST = WebResponse.GetResponseStream()) 
      using(StreamReader STreader = new StreamReader(ST)) 
       string RR = STreader.ReadToEnd(); 
} 
+0

所以,我写的,这是工作,但以4字! ,为什么? – GeeSuth

+0

不工作是什么意思? – feroze