3

我想从Windows shell使用HTTPie发送POST请求

JSON 输入看起来像:

{
    "name": "pub1",
    "email": "support@pub1.com",
    "address": {
        "city": "new york",
        "pincode": 12345
    }
}

我试过了:

http -v POST http://127.0.0.1:8000/publication/ name=pub1 email=support@pub1.com address:="{"city":"new york", "pincode":12345}"

它给出以下错误:

http: error: "address:={city: new": Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

httpie json错误

我使用Postman and Its Working做到了这一点,但我想知道如何使用httpie 做到这一点?

我还在 SOF 和 GitHub 上尝试了可用的解决方案,但无法找出问题所在。

4

1 回答 1

3

Windows shell 引用规则不同,因此不能:='<json>'像所有 osx/linux 示例那样使用单引号,您需要双引号。

您收到的错误消息是“期望用双引号括起来的属性名称”,但这很令人困惑,因为它在肉眼看来是双引号。

转义 json 文字内的双引号将执行此操作。您可以通过将引号字符加倍来做到这一点,如"".

"city"=>""city""

http -v post https://postman-echo.com/post address:="{""city"":""london""}"

POST /post HTTP/1.1
Content-Type: application/json
Host: postman-echo.com
User-Agent: HTTPie/2.3.0
{
    "address": {
        "city": "london"
    }
}

如果您愿意,还可以使用 echo 技巧来避免所有引用。此方法类似于使用文件,因此您指定整个 json 文档而不是单个字段。

echo {"address": {"city":"london"} } | http -v post https://postman-echo.com/post
于 2021-05-19T08:29:16.757 回答