簡體   English   中英

C#httpwebrequest有很多請求

[英]C# httpwebrequest with many request

我有列表詞,我需要在webrequest POST方法上發送所有這些詞,如下所示:該函數請求>

   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,並且關閉流閱讀器和流的好主意。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM