我想调用REST API传递包含反斜杠字符的参数。
API需要api/test/<app_name>/<user_name>
之类的路由,例如我想将domain\login
作为user_name
的值传递。
我尝试使用PowerShell:
$uri = [Uri]::EscapeUriString("http://localhost:5555/api/test/App Name/Domain\login")
# now $uri = 'http://localhost:5555/api/test/App%20Name/Domain%5Clogin'
Invoke-RestMethod -Method Get -Uri $uri -Verbose
带有Invoke-RestMethod
标记的-Verbose
输出显示PowerShell 正在将反斜杠转换为斜杠,之后我从REST API获取404(其中)预计因为路线不匹配):
VERBOSE: GET http://localhost:5555/api/test/App Name/Domain/login with 0-byte payload
Invoke-RestMethod :
404 Not Found
如何避免此行为并使用带反编码反斜杠的路径?
以下是我的$PSVersionTable
变量的输出:
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.953
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.953
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
答案 0 :(得分:0)
应该说什么:用/
替换//
也许您必须将其定义为常规String,然后将其转换为:
$RawUri = 'http://...'
您应该使用//
代替/
。
然后使用您的代码并将文本替换为新变量。