PowerShell 5.1中Invoke-RestMethod传递布尔值失败求助
解决PowerShell 5.1中Invoke-RestMethod发送布尔值POST请求的问题
问题核心在于请求体的格式不匹配:当你直接把哈希表传给-Body参数时,PowerShell 5.1的Invoke-RestMethod默认会将其编码为application/x-www-form-urlencoded格式,这种格式下布尔值$true会被转成首字母大写的字符串"True",而你的TypeScript服务期望的是JSON格式的小写true布尔值,这就导致了解析失败。
解决方案
将哈希表转换为JSON字符串,并显式指定请求的Content-Type为application/json:
$body= @{ "file"= $filePath "name"= $fileName.name "booleanValue" = $true } | ConvertTo-Json $response = Invoke-RestMethod -Uri $uri -Headers $headers -Method POST -Body $body -ContentType "application/json"
为什么之前的尝试无效
- 用0/1:表单格式下会被当作数字传递,但服务端期望的是布尔类型,类型不匹配
- 用
'true'字符串:表单格式下传递的是字符串值,而JSON的布尔值并非字符串类型,无法被服务端正确识别 [bool]类型变量:同样会被转成表单格式的"True"字符串,不符合JSON规范
额外注意
如果你的请求体包含嵌套较深的对象,需要给ConvertTo-Json加上-Depth参数(PowerShell 5.1默认深度为2),避免嵌套结构被截断:
$body = $bodyObject | ConvertTo-Json -Depth 10
内容的提问来源于stack exchange,提问作者Branderson20
相关产品推荐
相关产品推荐

