Powershell WCF 响应(标头和 Cookie)



如何使用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恰好是其中之一。 暴露的其他相关属性是(但不限于)...

  • 客户端证书
  • 凭据
  • 请求编码
  • 肥皂版本
  • 网址
  • 用户代理

最新更新