最近微信公众号功能莫名其妙的出问题,在调腾讯和百度接口就出问题,也不知道哪里抽风,只要调用外部接口,POST或者GET提交,准备出错。提示基础连接已关闭......

httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭

研究很久很久,搞不明白,不是一向都好好的嘛,难道只能网络也只需要赞美吗?代码都没动啊,以前跑得也很正常的啊,突然之间就提示基础连接已关闭,什么什么错误之类,搞了N久,都不知道为什么?蛋都痛得不行了。

以前的代码

 public static string HttpGetWebResponse(string url){string m = string.Empty;Stream stream = null;StreamReader sr = null;try{WebRequest request = WebRequest.Create(url);WebResponse response = request.GetResponse();stream = response.GetResponseStream();sr = new StreamReader(stream, System.Text.Encoding.UTF8);m = sr.ReadToEnd();return m;}catch (Exception e){LogHelper.WriteLog(e.Message);return string.Empty;}finally{if (stream != null){stream.Close();}if (sr != null){sr.Close();}}} 

这个有什么问题啊?有什么问题啊?有什么问题啊?不重要的事情也说三遍

不知道为什么,就是过不去。无奈之下,百般百度之下

 public static string GetPage(string posturl){Stream instream = null;StreamReader sr = null;try{HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(posturl);request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";request.KeepAlive = false;ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;ServicePointManager.DefaultConnectionLimit = 200;request.ServicePoint.ConnectionLimit = 200;request.ContentType = "application/x-www-form-urlencoded";request.ProtocolVersion = HttpVersion.Version10;request.Timeout = 5 * 1000;request.Method = "GET";//发送请求并获取相应回应数据HttpWebResponse response = request.GetResponse() as HttpWebResponse;//直到request.GetResponse()程序才开始向目标网页发送Post请求instream = response.GetResponseStream();sr = new StreamReader(instream, Encoding.UTF8);//返回结果网页(html)代码return sr.ReadToEnd();}catch (Exception ex){LogHelper.WriteLog("GET" + posturl + ex.Message);return string.Empty;}finally {if (sr != null) {sr.Close();sr = null;}if (instream != null) {instream.Dispose();instream.Close();instream = null;}}}

发现这么写就可以了,关键代码好像就一句

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

但是,但是,但是这样只是表示连腾讯的接口是可以,连百度的接口却不行的。我们系统是先测试的百度接口,百度搞好,连腾讯接口总是不行。着急,上火都没鸟用。

百度写如下:

public static string HttpPost(string Url, string postDataStr){try{System.GC.Collect();HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);request.ProtocolVersion = HttpVersion.Version10;//ServicePointManager.ServerCertificateValidationCallback = new RecommendService( RemoteCertificateValidationCallback(CheckValidationResult);ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;Stream myRequestStream = request.GetRequestStream();StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));myStreamWriter.Write(postDataStr);myStreamWriter.Close();HttpWebResponse response = (HttpWebResponse)request.GetResponse();//response.Cookies =  cookie.GetCookies(response.ResponseUri);Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));string retString = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();return retString;}catch (Exception e) {LogHelper.WriteLog("post提交失败" +Url + e.Message);return "";}}
 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

关键代码好像就这一句

到这里似乎可以总结了,就是两个接口的安全协议不一样。

这里有两个疑问,为什么会不一样了,为什么以前就是好的了。

运行环境IIS 下 framework2.0  语言C#,网上也说如果在4.0下就不需要如此复杂。因为服务器比较老,一时半会又没有银子升级,正好解释一下什么是没钱的人命苦。

最后了,似乎还是有点知其然不知其所以然。

基础连接已关闭解决办法相关推荐

  1. 基础连接已关闭解决办法_手机wifi连不上怎么办 手机wifi连不上解决办法【详解】...

    现在WLAN局域网无处不在,我们几乎都是生活在WiFi的世界里,其中使用手机连接WLAN局域网是最常见.最便携的方式.如果手机wifi连不上,这是一件比较让人抓狂的事.下面小编就给大家总结了手机wif ...

  2. 敬业签云便签提示“基础连接已关闭,发送时发生错误”如何解决

    部分Windows电脑系统用户在登录敬业签电脑版桌面便签软件时提示错误:The underlying connection was closed:Unable to connect to the re ...

  3. 敬业签云便签提示“基础连接已关闭,发送时发生错误!”如何解决

    部分Windows电脑系统用户在登录敬业签电脑版桌面便签软件时提示错误:The underlying connection was closed:Unable to connect to the re ...

  4. HttpWebRequest 提示 “基础连接已关闭:发送时发生意外错误” 的解决方法

    HttpWebRequest 多次请求不同网站时,由于安全协议问题.提示错误 "The underlying connection was closed: An unexpected err ...

  5. FTP之‘基础连接已关闭:服务器提交了协议冲突’错误探析

    这段时间由于工作的关系,一直研究FTP 服务器/客户端的相关程序,发现了不少问题,有些确实是微软的bug(或者说相关代码不够健壮) . 一.微软IE浏览器作为FTP客户端的bug 上传含中文字符的多级 ...

  6. C# WebRequest 基础连接已关闭 连接意外关闭

    1. 出现这种问题一般是因为request和response没有释放造成的,在请求处理完毕对请求request调用abort,对response调用close处理一下就好了. 2.我自己试的是这种: ...

  7. java preparedstatement 关闭_java - 如果基础连接已关闭,为什么isClosed()方法对PreparedStatements不返回true? - 堆栈内存溢出...

    就像标题所说的那样,我想知道为什么准备好的语句.isClosed()方法在关闭基础流(使用JDBC)后将返回false. public void someTest() throws SQLExcept ...

  8. C# HttpRequest基础连接已经关闭: 接收时发生意外错误

    在使用httpWebRequest访问数据时经常会碰到 基础连接已关闭这种问题,在代码中加入以下内容即可 HttpWebRequest request=new HttpWebRequest(); // ...

  9. c# System.Net.WebException: 基础连接已经关闭: 发送时发生错误。

    本文介绍了C#System.Net.WebException:基础连接已关闭:发送时发生意外错误 -> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭 ...

最新文章

  1. 共享文件时提示“将安全性信息应用到以下对象时发生错误”
  2. 太爽了!iPhone 11 包邮送大家!
  3. 水稻微生物组时间序列分析2b-散点图拟合
  4. Android 开发学习随笔
  5. #架构#重新设计socks5代理代码框架
  6. 软件项目管理0820:项目经理的困境
  7. ALTERA产品型号命名
  8. c++中的引用和python中的引用_【总结】C++、C#、Java、Javascript、Python中引用的区别...
  9. 架构师前辈告诉你:代码该如何才能自己写得容易,别人看得也不痛苦
  10. linux系统c++编译连接过程,动态库与静态库
  11. vue的模糊查询和下拉菜单修改信息------------学习记录
  12. 【CCF】201409-2 画图
  13. 机器学习(西瓜书)读书难点参考资料
  14. 围棋,与生活,与编程
  15. 《统计学习方法》python代码资料
  16. Adb connection Error: adb关闭,adb重启。BUG
  17. [逆向破解]lua脚本解密
  18. Monkey patcher for Lua
  19. java调用讯飞语音合成api
  20. C++笔试面试题 从网上整理的,带答案

热门文章

  1. canvas实现雨滴动画
  2. Springboot毕设项目社区生鲜商场系统rg450java+VUE+Mybatis+Maven+Mysql+sprnig)
  3. 破解跨境营销难题,木瓜移动助力企业构建流量壁垒
  4. ASP、Access、80040e14、保留关键字、INSERT INTO 语句的语法错误
  5. 一键复制工具怎么用?电脑上可以一键复制的工具
  6. 计算机页面变大要恢复怎么办,电脑页面变得很宽怎么办
  7. 行车记录仪专用语音识别芯片AT6802ABR1
  8. 淘宝/天猫,各大平台API操作(api接口)
  9. Android数据存储几种方式用法总结
  10. MYSQL Workbench server status stopped 如何解决?求解