在cURL中使用HTTP标头传递API密钥

时间:2016-11-28 06:14:00

标签: powershell curl apigee

我在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".

当我修改我的策略以查找查询参数而不是标题中的键时,它可以正常工作。我在这里错过了什么吗?

6 个答案:

答案 0 :(得分:16)

试试这个:

curl -v -H @{'apikey' = 'my_key'} http://api_org-test.apigee.net/v1/helloapikey

注意: curlInvoke-WebRequest cmdlet的别名:

Get-Alias curl

<强>输出:

CommandType     Name
-----------     ----
Alias           curl -> Invoke-WebRequest 

答案 1 :(得分:4)

你可以安装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

答案 2 :(得分:2)

以上答案均不适合我(我遇到了错误-parse error near })。

这有效:

curl -X GET \
  'http://api_org-test.apigee.net/v1/helloapikey' \
  -H 'apikey: my_key'

答案 3 :(得分:1)

PowerShell根本无法解析您网址中的变量。您正尝试在URI http:// $ serverHost:1234 / service查询服务,这将无法正常工作。你可以做到

$ serverHost =“myHost” $ service =“http:// $ serverHost`:1234 / service” Invoke-WebRequest $ service -Method Get

答案 4 :(得分:0)

  1. 在您的powershell中输入curl
  2. 它将调用Uri部分
  3. 输入你喜欢的uri

    http://apikey:key@your_url.com

  4. 它将提供您期望的输出。 干杯

答案 5 :(得分:0)

只需将其添加到讨论中,我都必须对api键进行哈希处理,但是离开令牌调用键短语,而不是将其更改为“ apikey”。这就是对我有用的东西!

curl -v -H @{'X-API-TOKEN' = '[*insert key here*]'} '*datacenter_url*)'

对于PowerShell新手来说也很值得注意,-v表示冗长。此开关在PowerShell ise中有关命令PS正在运行的命令下为您提供青色的文本。几乎像逐条解说。足够有用,我以为我会提到它。