此问题已在此处有答案:
Powershell: passing json string to curl(5个答案)
20天前关闭。
下面的命令有什么问题?我在powershell
中运行curl.exe
PS C:\Users\manuchadha> curl.exe https://aoai-try-mc.openai.azure.com/openai/deployments/try-davinci/completions?api-version=2022-12-01 -H "Content-Type: application/json" -H "api-key: keygoeshere" -d '{"prompt": "tell me a funny story" }'
{
"error": {
"message": "Your request contained invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}
curl: (6) Could not resolve host: me
curl: (6) Could not resolve host: a
curl: (6) Could not resolve host: funny
curl: (3) unmatched close brace/bracket in URL position 7:
story }
2条答案
按热度按时间yzckvree1#
我不清楚为什么会发生这种情况(我认为这可能是堆栈中某个地方的错误),但这似乎是Powershell特有的事情,而不是curl特有的事情。我写了一个小测试程序,看起来像这样:
在那之后,我试着运行你的命令,但是通过我的测试程序:
正如我们所看到的,出于某种原因,您打算作为单个参数的内容(您的JSON有效负载作为-d参数)在某些时候最终被拆分为多个参数,并且“被删除了。
解决这个问题的方法似乎是将引号加倍:
我相信这是一个有趣的原因,为什么命令行处理看起来像这样“破碎”,但我至少希望这有助于回答您的具体问题。
编辑:之前的Stack Overflow回答可能会提供一些见解:PowerShell stripping double quotes from command line arguments
tv6aics12#
为了完整性,转义
"
有助于-