PowerShell调用RestMethod传递Bearer及Body哈希表时遇错误求助
Eloverblik API调用错误分析与修复
错误原因拆解
1. 初始InvalidOperation错误
直接传递哈希表作为Invoke-RestMethod的-Body参数时,PowerShell默认会将哈希表序列化为application/x-www-form-urlencoded格式的表单数据,但Eloverblik API要求接收JSON格式的请求体,接口无法识别表单数据,因此抛出InvalidOperation错误。
2. 转换JSON后的ParserError错误
出现「哈希字面量缺少等号」的语法错误,完全是哈希表构造时的语法问题:
- 某个键值对未使用
=连接键和值(比如错误写为start @{date='2024-01-01'},正确应为start = @{date='2024-01-01'}) - 嵌套哈希表的括号、逗号使用不规范,导致PowerShell无法正确解析哈希字面量
修复方案与正确脚本
步骤1:构造符合语法的请求头与请求体哈希表
确保所有键值对都用=连接,嵌套结构层级清晰:
# 构造Bearer认证请求头 $headers = @{ 'Authorization' = 'Bearer 你的访问令牌' 'Content-Type' = 'application/json' } # 按照API要求的JSON结构构造哈希表 $bodyHash = @{ start = @{ date = '2024-01-01' hour = 0 } end = @{ date = '2024-01-02' hour = 0 } aggregation = 'Hour' # 示例字段,以实际API要求为准 }
步骤2:将哈希表转换为JSON字符串
必须指定-Depth参数(默认Depth为2,若嵌套层级更深会截断数据),确保JSON结构完整:
$jsonBody = $bodyHash | ConvertTo-Json -Depth 3
步骤3:发起POST请求
明确指定请求方法、URL、请求头和JSON格式的请求体:
$apiUrl = 'https://api.eloverblik.dk/api/你的目标接口路径' $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $jsonBody
关键注意事项
- 始终为
Invoke-RestMethod指定Content-Type: application/json请求头,明确告知接口请求体格式 - 转换JSON时根据实际嵌套层级调整
-Depth参数,避免数据丢失 - 检查哈希表语法:所有键值对必须有
=,嵌套哈希表用@{}包裹,同级键值对之间用换行或逗号分隔
内容的提问来源于stack exchange,提问作者StigK
相关产品推荐
相关产品推荐

