Передача ключа API с HTTP-заголовком в cURL

У меня есть прокси API в Apigee, который аутентифицируется с помощью ключа API. Я передаю ключ с заголовком HTTP-запроса, используя cURL, с помощью этой команды:

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

когда я изменяю свою политику, чтобы искать ключ в параметре запроса, а не в заголовке, он работает нормально. Я что-то упускаю?

5 ответов


попробуйте это:

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

Примечание: curl - это псевдоним для :

Get-Alias curl

выход:

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

PowerShell просто не разрешает переменную в вашем URL-адресе. Вы пытаетесь запросить службу в URI http:/ / $serverHost: 1234 / service, которая не будет работать. Вы могли бы сделать

$serverHost = " myHost" сервис $ = "HTTP://в$serverHost`:1234/услуги" Invoke-WebRequest $service-метод Get


Вы можете установить 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. введите curl в powershell
  2. он вызовет раздел Uri
  3. введите свой uri так

    http://apikey:key@your_url.com

это даст результат, который вы ожидали. Ура!--7-->


чтобы добавить это к обсуждению, мне пришлось как хэшировать ключ api, но оставить ключевая фраза вызова маркера, а не изменить его на "apikey". Это как раз то, что сработало для меня!

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

также примечательно для новичков PowerShell,- v означает многословный. Этот переключатель дает вам текст голубого цвета под командой в PowerShell ise о команде PS выполняется. Почти как играть комментарии. Я подумал, что стоит упомянуть об этом.