在Groovy脚本

时间:2017-03-31 14:30:12

标签: json curl jenkins groovy

我在Groovy脚本中发送curl请求时遇到了困难。

我一直收到无效的有效负载和全局错误。如果我在终端内执行以下操作,则可以正常使用

curl -X POST -H 'Content-type: application/json' --data '{"attachments": [{"color": "#2A9B3A", "author_name": "Richard Lewis", "title": "MY Build Status", "title_link": "http://example.co.uk", "text": "Successful Build" }]}' https://hooks.slack.com/services/webhook

但是当我尝试在我的Groovy脚本中执行此操作时,它失败了

sh """#!/bin/bash -l
      curl -X POST -H 'Content-type: application/json' --data {"attachments": [{"color": "#2A9B3A", "author_name": "Richard Lewis", "title": "My Build Status", "title_link": "http://example.co.uk", "text": "Successful Build" }]} "https://hooks.slack.com/services/T122JHEUW/webhook"
   """

如何正确格式化或者是否有更好的方式发送此请求?如果我可以将--data保存在一个变量中以传递给我的请求我会更清楚,但我也遇到了问题(有效负载错误),我想再次格式化了。

1 个答案:

答案 0 :(得分:1)

--data之后,我看不到你的json周围有任何包裹(使用引号)。可能这是一个原因。您可以尝试在json周围使用单引号(类似于您的其他curl命令,即--data '{...}'

有一个选项将json用于文件,然后使用--data-binary从文件发布。例如下面的一个。

--data-binary "@my.json"

最后,当然你可以使用任何做类似卷曲的groovy客户端(或库)。我对groovy不太了解。