【问题标题】:curl send JSON payloadcurl 发送 JSON 有效载荷
【发布时间】:2018-02-01 12:21:42
【问题描述】:

我只是在使用 RabbitMQ,我尝试向它发送一个 json 有效负载。不幸的是,我遇到了错误:

{"error":"bad_request","reason":"payload_not_string"}

我在某处读到需要使用"content_type": "application/json",但这也无济于事。

这是我要发送的正文:

{
    "properties": {
        "delivery_mode": 2,
        "content_type": "application/json"
    },
    "routing_key": "git",
    "payload": {
        "action": "created",
        "comment": {
            "url": "https://api.github.com/repos/baxterthehacker/public-repo/comments/11056394",
            "id": 11056394
        }
    },
    "payload_encoding": "string"
}

还有完整的卷曲:

curl -i -X POST \
   -H "Content-Type:application/json" \
   -H "Authorization:Basic Z3Vlc3Q6Z3Vlc3Q=" \
   -d \
'{
    "properties": {
        "delivery_mode": 2,
        "content_type": "application/json"
    },
    "routing_key": "git",
    "payload": {
        "action": "created",
        "comment": {
            "url": "https://api.github.com/repos/baxterthehacker/public-repo/comments/11056394",
            "id": 11056394
        }
    },
    "payload_encoding": "string"
}' \
 'http://localhost:8090/api/exchanges/%2f/amq.topic/publish'

是否可以发送 json 有效负载?我正在考虑将 Github webhook 发送到其中一个队列。

【问题讨论】:

    标签: rabbitmq rabbitmq-exchange


    【解决方案1】:

    RabbitMQ 团队会监控 this mailing list,但有时只会在 StackOverflow 上回答问题。


    您看到的错误是正确的,您的有效负载不是字符串。我必须重现此内容并重新访问 HTTP API 文档以使其变得清晰。

    您传递给 JSON 中 payload 键的值更多的是 JSON - 为了使其成为字符串,您必须正确转义它并像这样传递它:

    $ curl -4vvv -u guest:guest -H 'Content-Type: application/json' localhost:15672/api/exchanges/%2f/amq.topic/publish --data-binary '{
        "properties": {
            "delivery_mode": 2,
            "content_type": "application/json"
        },
        "routing_key": "git",
        "payload":"{\"action\":\"created\",\"comment\":{\"url\":\"https://api.github.com/repos/baxterthehacker/public-repo/comments/11056394\",\"id\":11056394}}",
        "payload_encoding": "string"
    }'
    

    另一种选择是对来自 GitHub 的 JSON 进行 base-64 编码并将其作为有效负载传递 - 如果您这样做,您将不必转义任何内容。

    【讨论】:

      猜你喜欢
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多