cURL发送JSON作为x-www-form-urlencoded

38

我想发布以下JSON:

{
   "cities": {
       "chicago": 123,
       "boston": 245
   }
}

在不使用.json文件的情况下,将curl用作x-www-form-urlencoded。我无法弄清楚如何构建curl -F ...


curl -F 'data={"cities":{"chicago":123,"boston":245}}' ... - anubhava
远程端期望哪些名称/值对?没有一个特定的输入与该 JSON 相对应。 - chepner
2个回答

80

对于application/x-www-form-urlencoded,您可以尝试:

curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/blahblah

其中 param1=value... 需要替换为你的 JSON 数据,格式如 chicago=123&boston=245

或使用显式表单:

curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/blahblah

你应该提供你服务的真实URL,而不是 http://localhost:3000/blahblah


7
根据man页,curl -F 的重点是“使用 RFC 2388 中的 Content-Type multipart/form-data 来 POST 数据。” 换句话说,当您需要模拟带有文件输入的 HTML 表单时,最好使用它。
相反,使用 curl -d 来指定原始的 POST 数据:
curl -d '{"cities":{"chicago":123,"boston":245}}' https://example.com

如果这确实是他们期望的数据格式,那么这个服务器配置错误了,因为 x-www-form-urlencoded 数据应该是以 key=value 的形式呈现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接