HTTP请求错误:”基础连接已关闭,发送时发生错误”

简介: 本文讲解HTTP请求错误:”基础连接已关闭,发送时发生错误”的解决方法。

我们经常会写post请求将我们需要传递的参数传递给目标地址端口,最近在写PowerAutomate的http触发流时遇到了这个问题,我对PowerAutomate的触发器URL发送post请求,但没有成功,后端捕获的异常为”基础连接已关闭,发送时发生错误”。这个问题是于安全协议导致的,更换安全协议类型即可

这个问题是由于安全协议导致的,更换安全协议类型即可。

可用代码如下:

usingSystem;
usingSystem.IO;
usingSystem.Net;
usingSystem.Text;
//传入目标地址Url和Post的参数jsonParas,返回目标端口的响应返回值publicstaticstringHttpRequestByPost(stringUrl, stringjsonParas) {
//设置服务属性ServicePointManager.Expect100Continue=true;
ServicePointManager.CheckCertificateRevocationList=true;
ServicePointManager.DefaultConnectionLimit=100;
ServicePointManager.SecurityProtocol= (SecurityProtocolType)3072;//这里设置了协议类型ServicePointManager.ServerCertificateValidationCallback=delegate { returntrue; };
//创建一个HTTP请求stringstrURL=Url;
HttpWebRequestrequest= (HttpWebRequest)WebRequest.Create(strURL);
request.Method="POST";
request.ContentType="application/json";
request.Accept="*/*";
byte[] payload;
stringparaUrlCoded=jsonParas;
payload=Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength=payload.Length;
//发送请求,获得请求流 Streamwriter;
try {
writer=request.GetRequestStream();
  }
catch (Exception) {
writer=null;
Console.Write("连接服务器失败!");
  }
writer.Write(payload, 0, payload.Length);
writer.Close();
//获得返回值HttpWebResponseresponse;
try {
response= (HttpWebResponse)request.GetResponse();
  }
catch (WebExceptionex) {
response=ex.ResponseasHttpWebResponse;
  }
Streams=response.GetResponseStream();
StreamReadersRead=newStreamReader(s);
stringpostContent=sRead.ReadToEnd();
sRead.Close();
returnpostContent;
}

解决问题的核心代码是这段服务属性配置:

//设置服务属性ServicePointManager.Expect100Continue=true;
ServicePointManager.CheckCertificateRevocationList=true;
ServicePointManager.DefaultConnectionLimit=100;
ServicePointManager.SecurityProtocol= (SecurityProtocolType)3072;//这里设置了协议类型ServicePointManager.ServerCertificateValidationCallback=delegate { returntrue; };

其中协议类型那一行,需要根据.Net的版本进行调整。

/*.net 4.0 设置:*/ServicePointManager.SecurityProtocol= (SecurityProtocolType)3072;
/*.net 4.5 设置(只要写SecurityProtocolType能够点出来的属性就可以):*/ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12||SecurityProtocolType.Ssl3||SecurityProtocolType.Tls11||SecurityProtocolType.Tls;
目录
相关文章
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
1135 130
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
1064 65
|
JSON API 网络架构
HTTP常见的请求方法、响应状态码、接口规范介绍
本文详细介绍了HTTP常见的请求方法、响应状态码和接口规范。通过理解和掌握这些内容,开发者可以更好地设计和实现W
2672 83
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
934 2
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
484 8
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
731 26
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
1426 30
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1232 20

热门文章

最新文章