web-dev-qa-db-fra.com

Passage de la clé API avec en-tête HTTP dans cURL

J'ai un proxy API dans Apigee qui est authentifié avec une clé API. Je passe la clé avec mon en-tête de requête HTTP en utilisant cURL, avec cette commande:

curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey

Je reçois cette erreur:

Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the 
"apikey: my_key" value of type "System.String" to 
type "System.Collections.IDictionary".

Lorsque je modifie ma stratégie pour rechercher la clé dans le paramètre de requête plutôt que l'en-tête, cela fonctionne correctement. Est-ce que j'ai râté quelque chose?

8
kuk_94

Essaye ça:

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

Remarque: curl est un alias de l'applet de commande Invoke-WebRequest:

Get-Alias curl

sortie:

CommandType     Name
-----------     ----
Alias           curl -> Invoke-WebRequest 
14
Martin Brandl

Vous pouvez installer curl: https://stackoverflow.com/a/16216825/3013633

Supprimez l'alias de boucle existant en exécutant cette commande:

Remove-item alias:curl

Ensuite, votre commande fonctionnera:

curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey

3
iaforek

PowerShell ne résout tout simplement pas la variable dans votre URL. Vous essayez d'interroger le service à l'URI http: // $ serverHost: 1234/service qui ne fonctionnera pas. Vous pourriez faire

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

1
user1012506

Juste pour ajouter ceci à la discussion, je devais à la fois hacher la clé api, mais quitter la phrase clé d’appel de jeton plutôt que de la changer en «apikey». C'est ce qui a fonctionné pour moi!

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

À noter également pour les nouveaux arrivants de PowerShell, -v signifie verbose. Ce commutateur vous donne un texte de couleur cyan sous la commande dans PowerShell à propos de la commande PS en cours d'exécution. Presque comme un commentaire play-by-play. Assez utile, je pensais en parler.

0
Jeremy Knudson
  1. Tapez curl dans votre powershell
  2. Il invoquera une section Uri
  3. Tapez votre uri comme ça

    http: // apikey: key@your_url.com

Il donnera le résultat que vous espériez.

0
Choxmi