我正在尝试使用 PowerShell 从多个系统将 JSON 正文发送到我的 Flask 网站。
虽然它适用于我的大多数系统,但在我的某些系统上失败,我无法弄清楚为什么..
PowerShell 命令:
$res = Invoke-RestMethod -Method 'Put' -Uri $url -Body (ConvertTo-Json $dut -Depth 3) -Header @{"Content-Type"="application/json"};
错误显示:
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a receive.
At line:1 char:8
+ $res = Invoke-RestMethod -Method 'Put' -Uri $url -Body (ConvertTo-Jso ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
在正常工作的系统上,我可以毫无问题地在 $url 上浏览网站
但是在失败的系统上,浏览器无法访问 $url 上的网站,并出现错误“连接已重置”,我认为这是解释了为什么 PowerShell 脚本也会在它们上失败。
我尝试比较[enum]::GetNames([Net.SecurityProtocolType])
通过和失败系统的输出,一切看起来都一样:
SystemDefault
Ssl3
Tls
Tls11
Tls12
Tls13
我还查找了许多其他类似的帖子,他们中的大多数人说这个命令可以解决他们的问题:[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol - bOR [System.Net.SecurityProtocolType]::Tls11 -bOR [System.Net.SecurityProtocolType]::Tls12
,但它对我不起作用,我也认为输出[enum]::GetNames([Net.SecurityProtocolType])
已经证明我的通过/失败系统都在使用这些协议...?
我不是这些协议的专家,到目前为止找不到有关如何解决此问题的任何信息。
有人可以给我一些指示吗?
谢谢!