2017-04-09 75 views
0

尝试创建两次获取请求。但是第二个请求总是抛出WebException消息:“底层连接已关闭:连接意外关闭。”.Net HttpWebRequest获取请求返回WebException

下面是代码尖晶石,我用

public string Get(string url) 
    { 
     string strResult = ""; 
     try 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.Method = "GET"; 
      request.CookieContainer = new CookieContainer(); 
      request.UserAgent = this.UserAgent; 
      request.KeepAlive = false; 

      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream stream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
      strResult = reader.ReadToEnd(); 
      response.Close(); 
     } 
     catch (Exception ex) 
     { 
      //Todo 
     } 
     return strResult; 
    } 

,我要求这url

如果我开始拉琴似乎第二个请求正常的结果。 如果我使用HttpClient类,它似乎也适用。

+0

[求助!运行Fiddler修复我的应用程序???](http://www.telerik.com/blogs/help!-running-fiddler-fixes-my-app-)这篇文章解释很多,以及[使用HttpClient SSL /基于TLS的客户端认证](https://pfelix.wordpress.com/2012/12/16/using-httpclient-with-ssltls/) – Fish

+0

change request.KeepAlive = true;解决了我的问题 – Fish

回答

0

当你开始小提琴手的时候,请求之间是否存在任何延迟(你是否在中间点击了一个断点)。也许在你的通话之间增加一个快速的Thread.Sleep(250);

另一个要点是,添加一些使用语句来关闭一次性类。

try { 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "GET"; 
    request.CookieContainer = new CookieContainer(); 
    request.UserAgent = this.UserAgent; 
    request.KeepAlive = false; 

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
    using (Stream stream = response.GetResponseStream()) 
    using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { 
     strResult = reader.ReadToEnd(); 
     response.Close(); 
} 
+0

已经尝试过你的代码仍然在第二个请求上抛出异常。但是,如果我要求谷歌(www.google.com)终点工作正常。 – Fish

相关问题