You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Invoke-RestMethod返回空节点但CMD curl调用正常如何解决

问题根因

  • ConvertTo-Json 默认递归深度仅为2,你的返回数据层级为 data > applications > nodes,超过默认深度后内容会被截断,导致输出的nodes字段为空,实际接口已返回正确数据,只是序列化阶段丢失了内容。
  • 部分GraphQL接口对请求体编码要求严格,PowerShell默认发送的请求体编码不符合要求时会导致参数解析失败。

修复后可运行代码

# 简化Headers构造,无需手动创建字典
$headers = @{
    "x-api-key" = "WHp"
}

# 通过对象转JSON构造请求体,完全避免引号转义问题
$body = @{
    query = "{applications(limit: 2) {nodes {name}}}"
} | ConvertTo-Json -Compress

# 发送请求时指定UTF8编码,兼容接口要求
$response = Invoke-RestMethod -Uri 'https://app.io/Id=Xz' -Method Post -Headers $headers -Body ([System.Text.Encoding]::UTF8.GetBytes($body)) -ContentType 'application/json; charset=utf-8'

# 序列化输出时指定足够深度,避免内容截断
$response | ConvertTo-Json -Depth 10

快速验证

你可以先直接输出$response.applications.nodes,如果能看到两个name分别为node1和node2的对象,即可确认之前的问题是ConvertTo-Json深度不足导致的。

内容的提问来源于stack exchange,提问作者vel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:54:03