我需要与之交互的Web服务(通常是手动进行测试)在某些请求上需要额外的HTTP标头。快速手动测试可以在PowerShell上很好地工作,New-WebServiceProxy
但是到目前为止,我还没有找到向请求添加另一个HTTP标头的选项。
有什么用吗?
Answers:
Invoke-WebRequest http://yourURLhere -Headers @{"accept"="application/json"}
在POSH 3.0中引入
New-WebServiceProxy
而不是在添加cmdlet时添加标头的问题Invoke-WebRequest
您可以从PowerShell使用.NET的Web客户端。
> $webClient = New-Object System.Net.WebClient
> $webClient.Headers.add('accept','application/json')
> $webClient.DownloadString('http://yourURLhere')
-Headers
选项。
令我感到惊讶的是:
$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属性:
https://msdn.microsoft.com/zh-CN/library/s4ys34ea(v=vs.110).aspx
在循环中发送授权并执行获取或删除请求的另一种简便方法
$orders=@("522536","522539")
foreach ($order in $orders){
iwr "https://api.taxjar.com/v2/transactions/orders/$order" `
-Method 'DELETE'`
-Headers @{ 'Authorization' ='Token token="34625gdsgd74rghdg4"'}
}
Accept
是保留的标头名称。我最终改为使用WebClient。