首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HTTP请求PowerAutomate错误:”基础连接已关闭,发送时发生错误”

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

作者头像
Damon小智
发布于 2024-02-03 02:25:37
发布于 2024-02-03 02:25:37
830146
代码可运行
举报
文章被收录于专栏:全栈文档库全栈文档库
运行总次数:46
代码可运行

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

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

可用代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.IO;
using System.Net;
using System.Text;

//传入目标地址Url和Post的参数jsonParas,返回目标端口的响应返回值
public static string HttpRequestByPost(string Url, string jsonParas) {

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

  //创建一个HTTP请求
  string strURL = Url;
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
  request.Method = "POST";
  request.ContentType = "application/json";
  request.Accept = "*/*";
  byte[] payload;
  string paraUrlCoded = jsonParas;
  payload = Encoding.UTF8.GetBytes(paraUrlCoded);
  request.ContentLength = payload.Length;

  //发送请求,获得请求流 
  Stream writer;
  try {
    writer = request.GetRequestStream();
  }
  catch (Exception) {
    writer = null;
    Console.Write("连接服务器失败!");
  }
  writer.Write(payload, 0, payload.Length);
  writer.Close();

  //获得返回值
  HttpWebResponse response;
  try {
    response = (HttpWebResponse)request.GetResponse();
  }
  catch (WebException ex) {
    response = ex.Response as HttpWebResponse;
  }
  Stream s = response.GetResponseStream();
  StreamReader sRead = new StreamReader(s);
  string postContent = sRead.ReadToEnd();
  sRead.Close();
  return postContent;

}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//设置服务属性
ServicePointManager.Expect100Continue = true;
ServicePointManager.CheckCertificateRevocationList = true;
ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;//这里设置了协议类型
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*.net 4.0 设置:*/
 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
/*.net 4.5 设置(只要写SecurityProtocolType能够点出来的属性就可以):*/
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12|| SecurityProtocolType.Ssl3 || SecurityProtocolType.Tls11 || SecurityProtocolType.Tls;

Damon_Liu

Damon, Chinese, Liu Guangzhi, Software development engineer, CSDN quality creator, Ali Cloud expert blogger, Microsoft Technology Associate, Good at C#, Java, PHP, Python, etc, Love sports, Workaholic, Communist.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
666
666
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
PySide6 GUI 编程(22):QToolBar的简单用法
密码学人CipherHUB
2024/07/31
3820
PySide6 GUI 编程(22):QToolBar的简单用法
PySide6 GUI 编程(6):QPushButton的使用
密码学人CipherHUB
2024/07/20
5692
PySide6 GUI 编程(6):QPushButton的使用
PySide6 GUI 编程(31):多个 QWidget 窗口展示
进程在刚启动时会初始化出两个窗口,这可以证明 init_new_window() 返回的对象是可以正常展示的
密码学人CipherHUB
2024/08/21
7123
PySide6 GUI 编程(31):多个 QWidget 窗口展示
PySide6 GUI 编程(7):QLabel的使用
密码学人CipherHUB
2024/07/20
4781
PySide6 GUI 编程(7):QLabel的使用
PySide6 GUI 编程(24):QDialog以及QDialogButtonBox
QDialog 自身运行时会触发一个事件循环, 这个事件循环与 QApplication 的事件循环并没有显著的从属关系,可以认为它们是独立的。
密码学人CipherHUB
2024/08/08
6512
PySide6 GUI 编程(24):QDialog以及QDialogButtonBox
PySide6 GUI 编程(9):QComboBox的使用
在 macOS 系统上,QComboBox 的 setPlaceholderText 方法可能不会按预期工作,因为 macOS 的用户界面指南通常不支持在组合框中使用占位符文本。
密码学人CipherHUB
2024/07/21
6891
PySide6 GUI 编程(9):QComboBox的使用
PySide6 GUI 编程(38):信号拦截与 lambda 槽函数
在之前的文章:PySide6 GUI 编程(3):信号槽机制中已经探讨过关于自定义信号的场景。在一些更追求灵活性的场景下,我们需要自定义信号,以此触发更多自定义的行为。
密码学人CipherHUB
2024/08/31
1.1K0
PySide6 GUI 编程(38):信号拦截与 lambda 槽函数
PySide6 GUI 编程(11):QLineEdit的使用
密码学人CipherHUB
2024/07/22
3661
PySide6 GUI 编程(11):QLineEdit的使用
PySide6 GUI 编程(40):MVC 设计原则下QListView的使用
代码应该遵循MVC(模型-视图-控制器)设计原则,将数据模型、视图和控制器分离,以便于维护和扩展。
密码学人CipherHUB
2024/09/01
4711
PySide6 GUI 编程(40):MVC 设计原则下QListView的使用
PySide6 GUI 编程(21):QFormLayout的简单用法
密码学人CipherHUB
2024/07/30
2340
PySide6 GUI 编程(21):QFormLayout的简单用法
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
文章目录 1. 状态栏 2. 窗口居中显示 3. 关闭窗口 4. QWidget 5. 添加图标 6. 气泡提示信息 7. QLabel 添加快捷键 8. QLineEdit echoMode 验证器 inputMask 综合练习 9. QTextEdit learn from 《PyQt5 快速开发与实战》 1. 状态栏 self.statusbar.showMessage("hello, Michael", 2000),第二个参数是显示多长时间ms,默认无限长时间 # -*- coding: utf-8
Michael阿明
2022/05/10
2.8K0
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
PySide6 GUI 编程(18):QGridLayout的简单用法
密码学人CipherHUB
2024/07/29
4090
PySide6 GUI 编程(18):QGridLayout的简单用法
PySide6 GUI 编程(32):QMouseEvent 鼠标事件
密码学人CipherHUB
2024/08/23
5681
PySide6 GUI 编程(32):QMouseEvent 鼠标事件
PySide6 GUI 编程(16):QTimer 的简单用法
密码学人CipherHUB
2024/07/25
5280
PySide6 GUI 编程(16):QTimer 的简单用法
PySide6 GUI 编程(26):QInputDialog的简单使用
密码学人CipherHUB
2024/08/19
4981
PySide6 GUI 编程(26):QInputDialog的简单使用
基于PySide6的GUI程序开发全流程(看完就会)
GUI程序的开发方式太多了,这里肯定就是Python语言了,至于为什么,就不多描述了;
MinChess
2023/09/29
15.7K0
基于PySide6的GUI程序开发全流程(看完就会)
PySide6 GUI 编程(37):QStyle.StandardPixmap 系统内置图标
密码学人CipherHUB
2024/08/26
5081
PySide6 GUI 编程(37):QStyle.StandardPixmap 系统内置图标
PySide6 GUI 编程(8):QCheckBox的使用
密码学人CipherHUB
2024/07/21
5481
PySide6 GUI 编程(8):QCheckBox的使用
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
PyQt5 是 Python 的图形用户界面 (GUI) 框架,它基于强大的 Qt 库。Qt 是一个跨平台的 C++ 框架,用于构建桌面应用程序。通过 PyQt5,我们可以用 Python 轻松构建跨平台的桌面应用程序,支持 Windows、macOS 和 Linux。
半截诗
2024/10/09
32.6K0
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
PySide6 GUI 编程(20):QTabWidget的简单用法
密码学人CipherHUB
2024/07/30
4360
PySide6 GUI 编程(20):QTabWidget的简单用法
推荐阅读
相关推荐
PySide6 GUI 编程(22):QToolBar的简单用法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档