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();
}
所以,我写的,这是工作,但以4字! ,为什么? – GeeSuth
不工作是什么意思? – feroze