Переменная хоста Invoke-Webrequest, неверный URI: не удалось проанализировать имя хоста

Я пытаюсь сделать вызов API для веб-службы и не уверен, что идет не так. Может быть цитата, которая неверна в $request переменная.

[string]$subKey = "AAAAA-BBBBB-FFFFFF-EEEEEE-DDDDD"
[string]$method = "GET"
[string]$searchParam = "Type"
[string]$searchQuery = "QQ"
$request=("""https://api.test.com/api/assets/search?" + $searchParam + "=" + $searchQuery + "&PageSize=10&Page=1"""+" -Headers @{""Authorization"""+"="""+"SubKey "+$subKey+"""}")

Invoke-WebRequest $request -Method Get

Это приводит к:

Неверный URI: не удалось проанализировать имя хоста.

Если я просто скопировать вывод $request и беги Invoke-WebRequest оно работает.

2 ответа

Решение

Invoke-WebRequest Командлет принимает -Uri и -Headers параметр. Также вы можете упростить URL:

[string]$subKey = "AAAAA-BBBBB-FFFFFF-EEEEEE-DDDDD"
[string]$method = "GET"
[string]$searchParam = "Type"
[string]$searchQuery = "QQ"
$uri= "https://api.test.com/api/assets/search?$searchParam=$searchQuery&PageSize=10&Page=1"

Invoke-WebRequest -Uri $uri -Headers @{Authorization ="SubKey $subKey"} -Method Get

Для тех, кто, возможно, оказался здесь из-за проблемы, не связанной с OP, это может быть полезно:

Удалите кавычки из строки URL. Буквально:

      $url = ($url -replace '"', "")

Конкретный сценарий: пытаясь динамически получить последнюю версию репозитория, я получил строки URL-адреса из GitHub API, запросив JSON с помощью jqв PowerShell (экспресс-билет в ад Windows Quote Hell) и закончился строками, содержащими кавычки.

Другие вопросы по тегам