【发布时间】:2015-04-01 22:45:44
【问题描述】:
我正在使用 curl 将 JSON 发送到 API 端点。然而,在 bash 链的某个地方,它变得一团糟。
关于使用curl 进行编码有什么特别需要了解的吗?
如果我这样构造有效载荷:
PAYLOAD='payload={"channel": "github", "username": "webhookbot", "icon_emoji": ":ghost:", "text": "'
PAYLOAD+=$1
PAYLOAD+=' " }'
echo $PAYLOAD
curl -X POST --data-urlencode "$PAYLOAD" $SLACKPOSTURL
echo "sent"
我会返回一个错误
负载不是有效的 JSON 发送
但是,如果我只是硬连线来为输出分配一个变量
PAYLOAD='payload={"channel": "github", "username": "webhookbot", "icon_emoji": ":ghost:", "text": "LAST_COMMIT Merge pull request #558 from dcsan/boteditor Boteditor " }'
那么它会顺利通过的。
简单的赋值与连接字符串有什么不同吗?在控制台中,输出看起来相同。
FWIW 一些消息通过但内容如下:
LAST_COMMIT 合并来自 dcsan/boteditor Boteditor 的拉取请求 #558
只有在硬编码后才会通过。所以它不是另一端 afaican 看到的,它与消息的构建方式有关。
【问题讨论】: