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?
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
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
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
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.
Tapez votre uri comme ça
Il donnera le résultat que vous espériez.