Передача ключа 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
- введите curl в powershell
- он вызовет раздел Uri
-
введите свой uri так
это даст результат, который вы ожидали. Ура!--7-->
чтобы добавить это к обсуждению, мне пришлось как хэшировать ключ api, но оставить ключевая фраза вызова маркера, а не изменить его на "apikey". Это как раз то, что сработало для меня!
curl -v -H @{'X-API-TOKEN' = '[*insert key here*]'} '*datacenter_url*)'
также примечательно для новичков PowerShell,- v означает многословный. Этот переключатель дает вам текст голубого цвета под командой в PowerShell ise о команде PS выполняется. Почти как играть комментарии. Я подумал, что стоит упомянуть об этом.