Переменная хоста 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) и закончился строками, содержащими кавычки.