我可以重用HttpWebRequest吗?
看起来对网站的第3个请求会导致操作超时.似乎每个请求都创建了一个新连接,所以我想知道我是否可以通过更改URL并再次获取请求来重用HttpWebRequest.有问题的代码如下.此代码检查是否存在一系列URL.
static void storeList(TextWriter sw, string urlTemplate, int start, int end)
{
for (int i = start; i < end; i++)
{
var url = string.Format(urlTemplate, i);
var req = (HttpWebRequest)HttpWebRequest.Create(url);
{
req.Method = "HEAD";
tryHttpWebRequest
{
var resp = req.GetResponse();
sw.WriteLine(i);
}
catch (Exception e)
{
}
}
}
sw.Flush();
}
Run Code Online (Sandbox Code Playgroud) 我想重用一个WebRequest对象,以便保存cookie和会话以便以后向服务器请求.以下是我的代码.如果我第二次使用Post功能两次
request.ContentLength = byteArray.Length;
它会引发异常
写入开始后无法设置此属性!
但正如你所看到的那样
dataStream.Close();
应该关闭写作过程!谁知道发生了什么事?
static WebRequest request;
public MainForm()
{
request = WebRequest.Create("http://localhost/admin/admin.php");
}
static string Post(string url, string data)
{
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(data);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
request.Abort();
return responseFromServer;
}
Run Code Online (Sandbox Code Playgroud)