Powershell Invoke-RestMethod - 处理 Uri 中的特殊字符

问题描述

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

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

只要 <value>一个普通的字符串或数字,一切正常。

但如果 <value> 包含任何特殊字符,如“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]::EscapeUriString([System.Web.HttpUtility]::UrlEncode([char]0x0000)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...