我正嘗試從PowerShell腳本調用Web服務。從PowerShell中調用Web服務:「服務器無法識別HTTP Header SOAPAction的值」
我不是Web服務的作者,也不瞭解更多關於Web服務的知識。 (我只是在PowerShell中也是如此。)
Web軟件的供應商爲我提供了一個.wsdl文件。我對其運行了wsdl.exe,然後針對生成的.cs文件運行了csc.exe,以生成代理.dll文件。
在我的PowerShell腳本,我實例化對象,並設置其url屬性並試圖調用的方法之一:
[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
我把我的電話的網絡捕獲,然後看一看:
POST /serverdirectory/serverfile.asmx HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.4927)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Authorization: NTLM TlRMTVNTUAABAAAAt4II4gAAAAAAAAAAAAAAAAAAAAAGAbAdAAAADw==
Host: servername
Content-Length: 0
的WSDL DESCRIPTIO n對於這個web服務是:
<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>
恐怕我並不真正瞭解這個例外;正如我所說的,網絡服務不是我要求勝任的領域。
如何確定服務器需要的soap動作,以及如何配置我的$ myVar以使用該soap動作?