调用RestMethod将反斜杠转换为斜杠
我想调用一个RESTAPI,传递一个包含反斜杠字符的参数 API需要一个类似于调用RestMethod将反斜杠转换为斜杠,rest,powershell,Rest,Powershell,我想调用一个RESTAPI,传递一个包含反斜杠字符的参数 API需要一个类似于API/test/的路由,例如,我希望将domain\login作为user\u name的值传递 我用PowerShell试过这个: $uri = [Uri]::EscapeUriString("http://localhost:5555/api/test/App Name/Domain\login") # now $uri = 'http://localhost:5555/api/test/App%20Name/D
API/test/
的路由,例如,我希望将domain\login
作为user\u 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
带有-Verbose
标志的Invoke RestMethod
的输出显示PowerShell正在将反斜杠转换为斜杠,之后我从REST API获得404(这是预期的,因为路由不匹配):
如何避免这种行为并使用带有编码反斜杠的路径?
以下是my$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
word应该用什么替换
/
也许您必须将其定义为常规字符串,然后将其转换为:
$RawUri = 'http://...'
这里您应该使用/
而不是/
然后使用代码并用新变量替换文本。。可以在windows上100%复制此功能。在CentOS上,\被转换为
/
,但%5C
保持%5C
…是的,奇怪的是我显式地转义了它,它仍然被替换。您使用的是什么版本的PowerShell?我使用的是5.1,我的详细输出是verbose:GEThttp://localhost:5555/api/test/App 名称/域%5使用0字节有效负载登录
,这表明它保留了反斜杠。@罗宾:我也在使用PS 5.1。我将用$PSVersionTable
的内容更新这个问题,为了完整起见,我正在使用psversion5.1.15063.0
和buildversion10.0.15063.0
。稍新一点。
$RawUri = 'http://...'