【问题标题】:Powershell Invoke-RestMethod - Handling special characters in UriPowershell Invoke-RestMethod - 处理 Uri 中的特殊字符
【发布时间】:2021-04-06 22:20:48
【问题描述】:

在 powershell 中,我使用 Invoke-RestMethod 调用了一个 rest API。我正在传递查询字符串参数,其值可以包含特殊字符并且它们会导致错误。

$x = Invoke-RestMethod -Uri "https://<something>.com?Key=<value>

只要&lt;value&gt; 是普通字符串或数字,一切正常。

但如果&lt;value&gt; 包含任何特殊字符,如“a:1”或“a\u0000”,则会错误提示

{"error":"bad_request","reason":"invalid UTF-8 JSON"}

我尝试对 Uri 进行 urlencoding,但它不起作用。

$encodedvalue = [System.Web.HttpUtility]::UrlEncode(<value>)
$x = Invoke-RestMethod -Uri "https://<something>.com?key=$encodedvalue

任何想法/建议将不胜感激

【问题讨论】:

  • 你可以试试[uri]::EscapeDataString(&lt;value&gt;) 吗?附言在两个示例中,您都缺少对 Invoke-RestMethod 的结束双引号。

标签: powershell urlencode invoke-restmethod


【解决方案1】:

我最终使用了下面的代码 sn-p。这个处理空字符 [uri]::EscapeUriString([System.Web.HttpUtility]::UrlEncode([char]0x0000)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多