我试图将消息发布到Slack频道。 Slack提供了一个cURL命令的示例,但是逐字运行并不起作用。
提供的命令是:
public static class MyCellEditor extends AbstractCellEditor implements TableCellEditor {
private JTextField editor;
private UndoableEditHandler undoableEditHandler;
public MyCellEditor(JTextField editor) {
this.editor = editor;
undoableEditHandler = new UndoableEditHandler(editor);
editor.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
@Override
public Object getCellEditorValue() {
return editor.getText();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
undoableEditHandler.setCanUndo(false);
editor.setText(value == null ? null : value.toString());
undoableEditHandler.setCanUndo(true);
return editor;
}
}
我已在我的机器上安装了最新的cURL(运行Windows 8.1),当运行上面的脚本时,我得到:
curl -X POST --data-urlencode 'payload={"channel": "#deployment", "username": "webhookbot", "text": "This is posted to #deployment and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/SomeCode/OtherCode/3rdCode
等
我认为它可能与Windows控制台如何处理单引号和双引号有关,但我一直无法让它工作。
我发现如果我用一个文件cache@filename.txt替换json字符串,那么它可以工作,但我真的需要json是动态的。
有人能说出这里有什么问题吗?
答案 0 :(得分:9)
cmd.exe处理的所有引用都是用双引号完成的,除非将命令括起来在FOR / F语句中运行。因此,在Windows上运行的cURL命令应该类似于:
curl -X POST --data-urlencode "payload={'channel': '#deployment', 'username': 'webhookbot', 'text': 'This is posted to #deployment', 'icon_emoji': ':ghost:'}" https://hooks.slack.com/services/Code1/Code2/Code3
答案 1 :(得分:3)
想出来。
我需要将包含整个JSON字符串的单引号更改为双引号,然后在此上下文中转义单引号的方法不是\"或^"但是""。
所以这很有效:
curl -X POST --data-urlencode "payload={""channel"": ""#deployment"", ""username"": ""webhookbot"", ""text"": ""This is posted to #deployment"", ""icon_emoji"": "":ghost:""}" https://hooks.slack.com/services/Code1/Code2/Code3
我希望这能节省别人花在我身上的时间。
答案 2 :(得分:0)
我的报价很好。
curl -X POST --data-urlencode 'payload={"channel": "#general", "username": "webhook", "text": "Some message.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/BLAHBLAH/BLAHBLAHBLAH/BLAHBLAHBLAHBLAH
然而,当尝试将它与cURL 7.15一起使用时不再起作用,可能是因为该版本不支持--data-urlencode
param,如果没有它,它似乎不起作用。
目前正在使用cURL 7.29,并且工作正常。