从PowerShell处理SOAP请求

3
我尝试使用代码示例,但不成功。有人可以发现错误吗?(我知道 New-WebServiceProxy cmdlet。)
function Execute-SOAPRequest 
( 
     [Xml]    $SOAPRequest, 
        [String] $URL 
) 
{ 
        write-host “Sending SOAP Request To Server: $URL$soapWebRequest = [System.Net.WebRequest]::Create($URL) 
        $soapWebRequest.Headers.Add("SOAPAction" ,"http://www.webservicex.net/globalweather.asmx?WSDL/GetWeather") 

    $soapWebRequest.ContentType = 'text/xml;charset="utf-8"' 
    $soapWebRequest.Accept      = “text/xml” 
    $soapWebRequest.Method      = “POST” 

    write-host “Initiating Send.” 
    $requestStream = $soapWebRequest.GetRequestStream() 
    $SOAPRequest.Save($requestStream) 
    $requestStream.Close() 

    write-host “Send Complete, Waiting For Response.” 
    $resp = $soapWebRequest.GetResponse() 
    $responseStream = $resp.GetResponseStream() 
    $soapReader = [System.IO.StreamReader]($responseStream) 
    $ReturnXml = [Xml] $soapReader.ReadToEnd() 
    $responseStream.Close() 

    write-host “Response Received.” 

      return $ReturnXml 
}

function Execute-SOAPRequestFromFile 
( 
        [String] $SOAPRequestFile, 
        [String] $URL 
) 
{ 
        write-host “Reading and converting file to XmlDocument: $SOAPRequestFile$SOAPRequest = [Xml](Get-Content $SOAPRequestFile)


    return $(Execute-SOAPRequest $SOAPRequest $URL) 
}

$x = Execute-SOAPRequestFromFile  -SOAPRequestFile soap-W.txt -URL "http://www.webservicex.net/globalweather.asmx?WSDL"

文件soap-W.txt:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.webserviceX.NET" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope">
<SOAP-ENV:Body>
<tns:GetWeather xmlns:tns="http://www.webserviceX.NET">
<tns:CityName>Tampa</tns:CityName>
<tns:CountryName>United States</tns:CountryName>
</tns:GetWeather>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

服务器返回错误500。通过New-WebServiceProxy查询成功。

1个回答

11

你应该尝试使用 New-WebServiceProxy CmdLet。

$svc = New-WebServiceProxy -Uri "http://www.webservicex.net/globalweather.asmx?WSDL"
$svc.GetWeather("Aurillac", "France")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接