从powershell调用web服务:“0”;服务器未识别HTTP标头SOAPAction的值;
我正在尝试从powershell脚本调用web服务 我不是web服务的作者,也不太了解web服务。(我也只是在PowerShell中升级。) web软件的供应商向我提供了一个.wsdl文件。我对它运行wsdl.exe,然后对生成的.cs文件运行csc.exe,以生成代理.dll文件 在我的powershell脚本中,我正在实例化一个对象,设置其url属性并尝试调用以下方法之一:从powershell调用web服务:“0”;服务器未识别HTTP标头SOAPAction的值;,powershell,wsdl,Powershell,Wsdl,我正在尝试从powershell脚本调用web服务 我不是web服务的作者,也不太了解web服务。(我也只是在PowerShell中升级。) web软件的供应商向我提供了一个.wsdl文件。我对它运行wsdl.exe,然后对生成的.cs文件运行csc.exe,以生成代理.dll文件 在我的powershell脚本中,我正在实例化一个对象,设置其url属性并尝试调用以下方法之一: [Reflection.Assembly]::LoadFrom("$ProxyDllPath\VendorPr
[Reflection.Assembly]::LoadFrom("$ProxyDllPath\VendorProxy.dll")
$myVar = new-object VendorObject
$myVar.url = "http://servername/serverdirectory/serverfile.asmx"
$myStuff = $myVar.GetStuff()
执行此操作时,会出现异常:
Exception calling "GetStuff" with "0" argument(s): "Server did not recognize the value of HTTP Header SOAPAction: ."
At C:\users\xxx\desktop\xxx.ps1:56 char:55
+ $myStuff = $myVar.GetStuff<<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
此Web服务的WSDL描述为:
<wsdl:operation name="GetStuff">
<soap:operation soapAction="" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
恐怕我真的不理解例外情况;正如我所说的,web服务并不是我声称有能力的领域
如何确定服务器需要的soap操作,以及如何配置$myVar以使用该soap操作?通常,“soapAction”的方法名将使用名称空间限定(如“”)。您可能需要检查您的asmx服务
如果您正在运行PowerShell V2(如果能够,您应该这样做),您可以尝试使用构建代理
通常,“soapAction”的方法名将使用名称空间限定(如“”)。您可能需要检查您的asmx服务
如果您正在运行PowerShell V2(如果能够,您应该这样做),您可以尝试使用构建代理
<wsdl:operation name="GetStuff">
<soap:operation soapAction="" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
$MyProxy = New-WebServiceProxy -Uri 'http://servername/serverdirectory/serverfile.asmx' -Namespace 'MyService'