最近在做一些微信相关的东西,使用C#遇到了一个非常诡异的问题。
请教大神。共同探讨一下原因。
先贴代码
static void Main(string[] args)
{
while (true)
{
HttpGet();
}
Console.Read();
}
public static string HttpGet()
{
string html = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://wx.qq.com");
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
html = reader.ReadToEnd();
reader.Close();
}
stream.Flush();
stream.Close();
}
response.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
finally
{
request.Abort();
request = null;
GC.Collect();
Thread.Sleep(15000);
}
return html;
}
关键的问题就是,连续两次https的keep-alive访问wx.qq.com,如果第二次请求之前sleep15秒钟,那第二次请求一定会报基础连接被关闭的异常。
然后如果打开httpanalyzer或者fidder抓包工具,那就没有这个问题。
stackoverflow有人说fidder相当于一个代理,会有一套自己的http连接池的管理办法。
不知道c#能不能实现类似的功能,或者是我修改某些参数就能解决这个异常。
其实就是实际做了点微信相关的东西,遇到了一些问题,有时候两次发到wx.qq.com的请求中间出现网络问题,间隔一会之后,后面的所有请求都会报错,非常诡异,求大神帮忙解答这个问题,感激不尽