【问题标题】:curl GET send JSON as HTTP parametercurl GET 发送 JSON 作为 HTTP 参数
【发布时间】:2018-04-18 16:16:20
【问题描述】:

我正在尝试使用 curl 从 bash 脚本向 AWS SQS 发送消息。我以article 为基础。因此,我正在构建以下请求: https://sqs.eu-west-1.amazonaws.com/[MY_QUEUE_NAME]?Action=SendMessage&MessageBody=[MY_MESSAGE]

从这里开始最复杂的。每当我使用纯文本作为 MY_MESSAGE 时,一切正常,并且消息被传递到 SQS,但我想发送一个 JSON: {“mahine”:“SOME_MACHINE”,“用户”:“SOME_USER”}

我还没有找到在 GET 请求中使用大括号作为 HTTP 参数的方法。如何使 {} 符号被识别为简单文本?

【问题讨论】:

    标签: curl get curly-braces


    【解决方案1】:

    真的,您应该将其添加到 POST 中的请求正文中,如下所示:

    curl -H "Content-Type: application/json" \ -X POST -d '{"machine":"SOME_MACHINE","user":"SOME_USER"}' \ https://sqs.eu-west-1.amazonaws.com/[MY_QUEUE_NAME]?Action=SendMessage

    但是,您可以将 JSON 添加到 URL 中的 GET 请求,但您需要首先使用百分比转义 encode 它(即 %20 转义空格)。 {} 在 URL 中无效,需要接受编码为 %7B%7D

    您可以使用此URL encoder 将您的 JSON 编码为 URL 可接受的格式。

    【讨论】:

    • 非常感谢,编码后整个消息问题已解决
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多