【发布时间】:2012-07-26 16:07:02
【问题描述】:
使用 Powershell v3 的 Invoke-WebRequest 和 Invoke-RestMethod 我已成功使用 POST 方法将 json 文件发布到 https 网站。
我使用的命令是
$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt")
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST
但是,当我尝试使用 GET 方法时:
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET
返回如下错误
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:8 char:11
+ $output = Invoke-RestMethod -Uri https://IPADDRESS/resource -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
我尝试使用以下代码忽略 SSL 证书,但我不确定它是否真的在做任何事情。
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
有人可以就这里可能出现的问题以及如何解决问题提供一些指导吗?
谢谢
【问题讨论】:
-
那么你用的是哪一个?
Invoke-RestMethod或Invoke-WebRequest? -
调用-WebRequest。我使用它,因为它返回请求/响应标头,这与 Invoke-RestMethod 不同。但是我尝试过 Invoke-RestMethod,它也采用相同的参数。
-
对于它的价值,ServerValidationCallback 几乎可以肯定是一个红鲱鱼,因为当你遇到 SSL 验证问题时应该得到的错误应该说:
Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.你可以尝试探索 $Error[ 0].Exception.InnerException 了解更多信息...
标签: .net rest powershell https