我在Apigee中有一个API代理,它使用API密钥进行身份验证。我使用cURL使用我的HTTP请求标头传递密钥,使用以下命令:
curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey
我收到此错误:
Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the
"apikey: my_key" value of type "System.String" to
type "System.Collections.IDictionary".
当我修改我的策略以查找查询参数而不是标题中的键时,它可以正常工作。我在这里错过了什么吗?
试试这个:
curl -v -H @{'apikey' = 'my_key'} http://api_org-test.apigee.net/v1/helloapikey
注意:curl
是Invoke-WebRequest
cmdlet的别名:
Get-Alias curl
输出:
CommandType Name
----------- ----
Alias curl -> Invoke-WebRequest
你可以安装curl:https://stackoverflow.com/a/16216825/3013633
执行以下命令删除现有的curl别名:
Remove-item alias:curl
然后你的命令将工作:
curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey
PowerShell根本无法解析您的URL中的变量。您正尝试在URI http:// $ serverHost:1234 / service查询服务,这将无法正常工作。你可以做到
$ serverHost =“myHost”$ service =“http:// $ serverHost`:1234 / service”Invoke-WebRequest $ service -Method Get
它会给出你期望的输出。干杯
只是将此添加到讨论中,我不得不对api键进行散列,但保留令牌调用关键短语而不是将其更改为“apikey”。这才对我有用!
curl -v -H @{'X-API-TOKEN' = '[*insert key here*]'} '*datacenter_url*)'
同样值得注意的是PowerShell新手,-v代表详细。此开关在PowerShell命令下为您提供有关PS正在运行的命令的青色文本。几乎像一个逐个播放的评论。有用,我以为我会提到它。