Web services 是否可以通过新的WebServiceProxy向web服务发送额外的HTTP头

Web services 是否可以通过新的WebServiceProxy向web服务发送额外的HTTP头,web-services,powershell,Web Services,Powershell,我需要与之交互的web服务(通常是手动进行测试)在某些请求上需要额外的HTTP头。使用PowerShell的新WebServiceProxy进行快速手动测试非常有效,但到目前为止,我还没有找到向请求添加另一个HTTP头的选项 有什么办法吗?您可以从PowerShell使用.NET的web客户端 > $webClient = New-Object System.Net.WebClient > $webClient.Headers.add('accept','application/js

我需要与之交互的web服务(通常是手动进行测试)在某些请求上需要额外的HTTP头。使用PowerShell的
新WebServiceProxy
进行快速手动测试非常有效,但到目前为止,我还没有找到向请求添加另一个HTTP头的选项


有什么办法吗?

您可以从PowerShell使用.NET的web客户端

> $webClient = New-Object System.Net.WebClient
> $webClient.Headers.add('accept','application/json')
> $webClient.DownloadString('http://yourURLhere')

中介绍,我很惊讶没有出现这种情况:

$uri = 'http://...'

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add('Accept','Application/Json')
$headers.Add('X-My-Header','...')

$result = Invoke-WebRequest -Uri $uri -Headers $headers
为完整起见,请参考headers属性:


在循环中发送授权和执行Get或Delete请求的另一种简单方法

$orders=@("522536","522539")

foreach ($order in $orders){
    iwr "https://api.taxjar.com/v2/transactions/orders/$order" `
      -Method 'DELETE'`
      -Headers @{ 'Authorization' ='Token token="34625gdsgd74rghdg4"'}
}

这比仅仅获得一个具有所有正确方法和类型的代理对象要复杂得多。如果我只是手工输入所有内容,包括JSON/XML,那么我就可以使用Fiddler并完成它。您可以始终将Fiddler请求复制到文本文件中,并从PowerShell中读取该请求,以自动创建标题,无论采用哪种方法。这是PS3及以下版本的答案。@davidhigh correction:适用于PS3以下版本。PS3确实包含了
-Headers
选项。由于
Accept
是一个保留的头名称,因此出现了一个错误。我最终改用了WebClient。这在PowerShell中也可以使用,但仅限于v4及更高版本。在v3中,它抛出了一个异常。问题是关于在使用cmdlet
New-webservicecoproxy
而不是
Invoke-WebRequest
时添加标题。我在命令行上搜索Invoke-WebRequest标题很久之后来到这里。多个头可以用分号分隔:Invoke WebRequest-Uri-headers@{'x-caller-name'='CallerName';'Content-Type'='application/json';}这是一种完全不同的访问web服务的方法。当然,这是一个选择,但这不是问题所在。
$orders=@("522536","522539")

foreach ($order in $orders){
    iwr "https://api.taxjar.com/v2/transactions/orders/$order" `
      -Method 'DELETE'`
      -Headers @{ 'Authorization' ='Token token="34625gdsgd74rghdg4"'}
}