Windows 调用API时出现的问题
我们有两个API来执行POST和GET请求。它们过去都工作得很好,但进行POST的API开始出现错误: Invoke WebRequest:基础连接为:接收时发生意外错误` 我已经尝试研究了几天,所有KBs都指向某种SSL/TLS,并添加了以下代码:Windows 调用API时出现的问题,windows,powershell,api,invoke-webrequest,Windows,Powershell,Api,Invoke Webrequest,我们有两个API来执行POST和GET请求。它们过去都工作得很好,但进行POST的API开始出现错误: Invoke WebRequest:基础连接为:接收时发生意外错误` 我已经尝试研究了几天,所有KBs都指向某种SSL/TLS,并添加了以下代码: [Net.ServicePointManager]::SecurityProtocol = "SystemDefault,Tls12, Tls11, Tls, Ssl3" 但是我从一开始就已经有了这个代码。然而,我找不到解决我问题的办法 操作系统
[Net.ServicePointManager]::SecurityProtocol = "SystemDefault,Tls12, Tls11, Tls, Ssl3"
但是我从一开始就已经有了这个代码。然而,我找不到解决我问题的办法
操作系统:Windows 2012PowerShell版本:4.0
function funName ($Val1, $Val2) {
[Net.ServicePointManager]::SecurityProtocol = "SystemDefault,Tls12, Tls11, Tls, Ssl3"
#[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
#[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
$url = "https://someAPI/post.request/do-something"
$user = "username"
$pass = "password"
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds "
$Headers = @{
"Accept"="application/json"
Authorization = $basicAuthValue
}
$Body = @{
'@type' ='x'
parm1 = $Val1
parm2 = $Val2
}
#[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri $url -Headers $Headers -Method Post -Body $Body | Out-Null
}
## Deactivation Request ffffffff##
funName -RequestID Val1 adID Val2
如前所述,这在上周之前一直有效。将其设置为脚本的顶部:
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
namespace myTrust
{
public class TrustAllCertsPolicy : ICertificatePolicy
{
public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
{
return true;
}
}
}
"@
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object myTrust.TrustAllCertsPolicy
我正在处理一个类似的请求,以从API检索数据,我发现我正在调用我的函数,在我的第二个a参数中,我的名字是
funName-val1 1234 val2 9999
where is missing“-”。一旦我确定它重新开始工作funName-val1 1234-val2 9999
。感谢Stackoverflow社区在此方面提供的帮助。这可能是一个愚蠢的问题,但您是否验证了证书未过期?否。证书未过期