使用PowerShell访问SOAP Web服务:寻找可用带WSDL的测试服务
确实,微软早年推的webservicex这类SOAP服务大多已经躺平了,加上谷歌逐步弃用SOAP,找靠谱的测试服务确实有点闹心。不过还是有几个稳定的公开SOAP服务可以用来在PowerShell里练手,我自己测试SOAP调用的时候常用下面这两个:
推荐的测试SOAP服务
- 在线计算器服务:这个是最经典的测试服务之一,WSDL地址
http://www.dneonline.com/calculator.asmx?WSDL,支持加减乘除基础运算,接口简单到没朋友,亲测一直稳定可用。 - 国家信息查询服务:如果想测试更复杂的SOAP调用,可以试试这个,WSDL地址
http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL,能查国家代码、名称、货币、时区等信息。
PowerShell测试实操步骤
PowerShell里调用SOAP服务最方便的就是用New-WebServiceProxy cmdlet,直接生成代理对象就能调用方法,不用手动处理SOAP信封。
测试计算器服务
- 生成服务代理:
# 创建代理对象,指定WSDL地址和自定义命名空间 $calcProxy = New-WebServiceProxy -Uri "http://www.dneonline.com/calculator.asmx?WSDL" -Namespace "CalcTest"
- 调用接口方法:
# 测试加法 $addResult = $calcProxy.Add(12, 8) Write-Host "12 + 8 = $addResult" # 测试乘法 $mulResult = $calcProxy.Multiply(7, 9) Write-Host "7 * 9 = $mulResult"
- 查看所有可用方法:
如果不知道服务支持哪些操作,直接用Get-Member查看:
$calcProxy | Get-Member -MemberType Method
测试国家信息服务
这个服务的方法参数稍微复杂一点,比如查询国家名称:
$countryProxy = New-WebServiceProxy -Uri "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL" -Namespace "CountryTest" # 传入国家代码(比如US、CN)获取名称 $cnName = $countryProxy.CountryName("CN") Write-Host "CN对应的国家名称:$cnName"
注意事项
这些都是免费的公开测试服务,别拿来做生产环境的调用,偶尔测试用用没问题,要是频繁调用可能会被限流。
内容的提问来源于stack exchange,提问作者Thufir
相关产品推荐
相关产品推荐

