如何使用Powershell连接到WCF Web服务,并检索响应标头信息,包括cookie数据? 我已经在网上搜索了,除了放弃使用New-WebServiceProxy之外,找不到任何相关信息。
我目前的PS脚本看起来像...
$authSvc = New-WebServiceProxy –Uri ‘http://myserver/Services/AuthenticationService.svc?WSDL’
$LoginResults = $true
$authSvc.Login('user1', 'abc123', $null, $true, $true, [ref] $LoginResults, [ref] $null)
。似乎必须有额外的钩子进入新的WebServiceProxy来暴露标头数据,但我似乎无法识别它。 使用 C#(只是一个测试控制台应用程序),我已经能够调用此 Web 服务并检索 cookie 数据,因此我知道该服务正常运行。
思潮?
好的 - 我想我自己的问题有一个答案。 放在这里供其他人尝试同样的事情。
诀窍是使用New-WebServiceProxy对象固有的CookieContainer对象。 CookieContainer 中有一个 CookieCollection。 可以枚举此集合。 在问题中详细阐述我的示例,我将展示如何公开从 Web 服务调用返回的 cookie 信息...
$authSvc = New-WebServiceProxy –Uri ‘http://myserver/Services/AuthenticationService.svc?WSDL’
$authSvc.CookieContainer = New-Object System.Net.CookieContainer
$LoginResults = $true
$authSvc.Login('user1', 'abc123', $null, $true, $true, [ref] $LoginResults, [ref] $null)
$CookieCollection = $authSvc.CookieContainer.GetCookies(‘http://myserver/Services/AuthenticationService.svc?WSDL’)
foreach($cookie in $CookieCollection)
{
echo $cookie.Name
echo $cookie.Value
}
如果我使用服务的获取成员方法...
$authSvc | Get-Member
。然后,我可以看到服务允许的所有公开方法。 CookieContainer恰好是其中之一。 暴露的其他相关属性是(但不限于)...
- 客户端证书
- 凭据
- 请求编码
- 肥皂版本
- 网址
- 用户代理