Скрипт api curl не выводит - PullRequest
       10

Скрипт api curl не выводит

0 голосов
/ 06 декабря 2018

Ниже приведен вызов API, используемый в Powershell

$tokenrequest = @{ "grant_type" = "password"; "username" = $env:EMUsername; "password" =  $env:EMPassword }
Invoke-RestMethod -Uri $URL1 -ContentType application/x-www-form-urlencoded -Headers @{ Authorization = ("OAuth2")} -Method POST -Body $tokenrequest

То же самое при преобразовании в скрипт curl не дает никакого вывода

curl -X POST $URL1 -H "Content-Type:application/x-www-form-urlencoded" -H "Content-Length:1045" -H "Authorization:OAuth2" --data '{"grant_type":"password", "username":$env:EMUsername,"password":$env:EMPassword}' --write-out token

1 Ответ

0 голосов
/ 06 декабря 2018

Есть несколько проблем:

  • Сначала, как указывает Мэтт , вы пытаетесь ссылаться на переменные окружения, такие как $env:EMUsername, в вашей строке,все же вы используете '...', то есть строку в одинарных кавычках, в которой не предусмотрено никакого расширения (интерполяции) переменной по проекту - вместо этого используйте "...".

  • Далее, чтобы встраивать строковые значения, такие как $env:EMUsername, в текст JSON, они должны быть "..." -закрытыми _ как часть текста JSON: например, "{ `"username`": `"$env:USERNAME`" }"

  • Наконец, к сожалению, вы должны вручную \" -сохранить все встроенные " экземпляры до , чтобы убедиться, что они распознаются внешними программами, например curl;в сочетании с собственным экранированием PowerShell " это означает, что внедренные " экземпляры должны быть экранированы как \`" (sic; или \""; см. эту проблему с документацией по GitHub для фона).

Чтобы сложить все вместе:

$json = "{
  \`"grant_type\`": \`"password\`",
  \`"username\`": \`"$env:EMUsername\`",
  \`"password\`": \`"$env:EMPassword\`"
}"

curl -X POST $URL1 -H "Content-Type:application/x-www-form-urlencoded" `
     -H "Content-Length:1045" -H "Authorization:OAuth2" `
     --data $json --write-out token
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...