【发布时间】:2019-08-30 01:51:44
【问题描述】:
我正在尝试将工作中的 SOAP 客户端(用 Perl 编写)移植到 PowerShell 以用于不同的客户端(他们不允许我们用 Perl 污染他们锁定的 Windows 环境)。
所以我尝试下载 WSDL 信息以创建代理,使用我在 Web 上找到的示例。这就是现有 Perl 代码的工作方式,因此该方法是合理的。
$soap = New-WebServiceProxy -Uri $url -UseDefaultCredential
New-WebServiceProxy : The HTML document does not contain Web service discovery information.
At line:1 char:9
+ $soap = New-WebServiceProxy -Uri $uri
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (http://localhos...sx:Uri) [New-WebServiceProxy], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.NewWebServiceProxy
但是,正如我所说,这是基于工作代码的,因此服务器端不太可能出现任何问题。作为测试,输入
$WebResponse = Invoke-WebRequest -UseDefaultCredential $url
$WebResponse
我得到:
StatusCode : 200
StatusDescription : OK
Content : `<?xml version="1.0" encoding="UTF-8"?>
<!-- SOAP API definitions -->
<definitions name="SOAPAPI"
这是我所期望的 - 它是 WSDL 标头的开始。
我没有看到发生了什么问题,有人有什么建议吗?
【问题讨论】:
-
暗中刺伤:将
?wsdl添加到$uri的值有帮助吗? -
在这种情况下,没有。我们知道 uri 是正确的 - 它是由现有 Perl 代码生成的,我们将 WSDL 作为 Invoke-WebRequest 中的内容返回。
-
你的变量是 $uri 还是 $url?该错误与您的代码不同
-
你看过这篇文章吗? stackoverflow.com/questions/27793078/…
-
抱歉,这里有一个错字。变量是 $url,在我的 PS 历史中是一致的。
标签: powershell soap wsdl