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

PowerShell调用PaLM API报错:无法将String转换为IDictionary

解决PowerShell调用PaLM API的参数格式错误问题

问题原因

你遇到的错误是因为PowerShell中Invoke-WebRequest(curl是它的别名)的-Headers参数要求传入哈希表(键值对字典),而不是直接传字符串格式的头信息。curl的语法在PowerShell中不直接兼容,两者的参数解析逻辑存在差异。

修正后的命令

方法1:使用Invoke-WebRequest的标准参数格式

先定义符合要求的请求头和请求体,再执行API调用:

# 定义请求头(哈希表格式)
$requestHeaders = @{
    "Content-Type" = "application/json"
}

# 定义请求体并转为JSON格式
$requestBody = @{
    prompt = @{
        text = "Write a story about a magic backpack"
    }
} | ConvertTo-Json

# 发起API请求
Invoke-WebRequest -Uri "https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key=AIzaSyAxHrnH91lSLOeaWs5Rda1_PTn-OnWN9Kg" `
    -Headers $requestHeaders `
    -Method Post `
    -Body $requestBody

方法2:使用Invoke-RestMethod(更适合API交互)

Invoke-RestMethod是PowerShell专门为REST API设计的cmdlet,会自动处理JSON解析,用法更简洁:

$requestBody = @{
    prompt = @{
        text = "Write a story about a magic backpack"
    }
}

Invoke-RestMethod -Uri "https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key=AIzaSyAxHrnH91lSLOeaWs5Rda1_PTn-OnWN9Kg" `
    -ContentType "application/json" `
    -Method Post `
    -Body ($requestBody | ConvertTo-Json)

方法3:强制按curl语法解析(不推荐,仅作备选)

使用--%让PowerShell暂停自身参数解析,直接按原生curl语法执行:

curl --% "https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key=AIzaSyAxHrnH91lSLOeaWs5Rda1_PTn-OnWN9Kg" -H "Content-Type: application/json" -X POST -d "{ ""prompt"": { ""text"": ""Write a story about a magic backpack""} }"

关键注意点

  • PowerShell中所有接受键值对的参数(如-Headers)都需要用哈希表@{Key=Value}格式,不能直接传字符串
  • 手动编写JSON字符串时要注意双引号转义(用""代替"),推荐用哈希表转JSON的方式避免这类问题
  • Invoke-RestMethod会直接返回API的JSON响应内容,无需额外解析响应对象的Content属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:50