powershell - API GET 请求适用于 curl,但不适用于 powershell
问题描述
下午好,
如果我通过命令行发送这个 curl 请求,它工作正常。但是当我使用我的 powershell 脚本时,我没有得到相同的结果。
卷曲脚本:
CURL --request GET "https://staging.tiptrack.nl/Tiptrack.Employer.Api/odata/EmployeeBudgets?$expand=Employee($expand=SecureEmployee)&$top=5" -H "accept: application/json" -H "Authorization: Bearer token"
Powershell脚本:
#------- Opvragen token tiptrack -------
#Dit is de URL waar de token voor tiptrack wordt opgevraagd.
$Url_token="https://tiptracknext-staging-login.indicia.nl/oauth2/aus342go9hNphcHXM0i7/v1/token"
#Dit is de body die mee wordt gestuurd in de request, deze informatie staat gelijk aan de data in de post request vanuit de handleiding.
$Data_token = @{
grant_type="client_credentials"
client_id="123456"
client_secret="123456"
scope="api"
}
$token_tiptrack=Invoke-RestMethod -Method Post -Uri $Url_token -ContentType "application/x-www-form-urlencoded" -Body $Data_token
#------- Opvragen Employerbudgetsid -------
#Dti is de URL waarna de GET request wordt gestuurd om het employerid te kunnen.
$Url_budgetid="https://staging.tiptrack.nl/Tiptrack.Employer.Api/odata/EmployeeBudgets?$expand=Employee($expand=SecureEmployee)&$top=5"
#Dit is header die mee wordt gestuurd in de request. Deze data in deze header staat gelijk aan de data in de API handleiding.
$header_process = @{
Authorization='Bearer '+$token_tiptrack.access_token
"accept"="application/json"
}
#Vanuit het uploaden van het bestand krijgen we een reactie van de server, in deze reactie staat het upload id, deze id hebben we nodig om het bestand te kunnen verwerken.
Invoke-RestMethod -Uri $Url_budgetid -Method Get -Headers $header_process | Select-Object -ExpandProperty value
我希望有人可以帮助我解决这个问题。通过 CURL 操作,我得到前 5 行,通过 powershell 我得到所有可用的行。
解决方案
要将字符串值作为逐字或文字传递,最好使用单引号或反引号转义 PowerShell 的特殊字符。如果字符串中没有变量引用,单引号是最简单的。
# Using Single Quotes
$Url_budgetid='https://staging.tiptrack.nl/Tiptrack.Employer.Api/odata/EmployeeBudgets?$expand=Employee($expand=SecureEmployee)&$top=5'
# Escaping the $ while using double quotes
$Url_budgetid="https://staging.tiptrack.nl/Tiptrack.Employer.Api/odata/EmployeeBudgets?`$expand=Employee(`$expand=SecureEmployee)&`$top=5"
使用双引号将字符串括起来使字符串可扩展。当代码运行$
后跟合法的变量名字符将被解释为变量引用。在您的会话中,$expand
并将$top
替换它们的值,$null
如果您没有定义它们。结果,这些字符串似乎已从URI
. 您只需$Url_budgetid
在控制台输入即可看到这种情况。
推荐阅读
- ios - 显示来自 firebase / Swift 的图像
- c++ - 在模板函数中推导模板函数(使用 C++ 概念)
- java - 如果未以某种格式提供,Gradle 将无法解析我的依赖项
- javascript - TypeError: val.toString 不是函数 - mysql npm
- javascript - 带有 PHP 的 Javascript 双弹出模式
- java - 使用 defaultTyping 反序列化字符串列表
- python - 如何在不使用字典或 list.count() 的情况下计算字符串中出现的字母?
- apache - 如何正确使用 Nginx 作为具有 SSL 的多个 Apache Docker 容器的反向代理?
- python - 如何在 python 中按年分隔熊猫数据框?
- python - Python - 库在虚拟环境中存储在哪里?