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

问题描述 投票:10回答:5

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

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

powershell curl apigee
5个回答
17
投票

试试这个:

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 

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


1
投票

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

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


0
投票
  1. 在您的powershell中键入curl
  2. 它将调用Uri部分
  3. 输入这样的uri http://apikey:key@your_url.com

它会给出你期望的输出。干杯


0
投票

只是将此添加到讨论中,我不得不对api键进行散列,但保留令牌调用关键短语而不是将其更改为“apikey”。这才对我有用!

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

同样值得注意的是PowerShell新手,-v代表详细。此开关在PowerShell命令下为您提供有关PS正在运行的命令的青色文本。几乎像一个逐个播放的评论。有用,我以为我会提到它。

© www.soinside.com 2019 - 2024. All rights reserved.