您如何在Jenkins中使用二进制文件执行HTTP POST?

时间:2019-01-29 04:56:27

标签: java jenkins groovy jenkins-pipeline

我想对二进制文件执行HTTP POST,就像我从邮递员这样:

enter image description here

请注意,这里我选择了带有二进制选项的HTTP Post,并标记了我的文件“ splop.sar”。

服务器会回复我的用例预期的http 409。

使用httpRequest插件,我在Jenkins的尝试如下:

def myFile = readFile("splop.sar")
httpRequest authentication: 'userdef', consoleLogResponseBody: true, contentType: 'APPLICATION_ZIP', httpMode: 'POST', requestBody: myFile, responseHandle: 'NONE', url: 'myurl.com/service'

问题是,我的后端服务器拒绝了该请求为无效请求,毫无疑问,此处的编码失败了。我尝试了以下替代方法:

def myFile = readFile("splop.sar").bytes

哪个也会失败,以及:

def myFile = readFile("splop.sar").bytes.toString()

哪个也会失败!

我可以在Jenkins中做些什么,以提供邮递员在我的管道中提供的相同样式的HTTP Post?我相信这里的最大区别是什么使POST请求相对于其他某种形式成为“二进制”帖子?

1 个答案:

答案 0 :(得分:1)

我认为您无法使用http-request-plugin完成此操作,其中有一个open bug for that

您绝对可以使用curl-Send POST Request with Data Specified in File via Curl

curl -i -X POST host:port/post-file \
  -H "Content-Type: text/xml" \
  --data-binary "@path/to/file"