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

标签 java jenkins groovy jenkins-pipeline

我想执行一个二进制文件的 HTTP POST,就像我在 Postman 中那样:

enter image description here

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

服务器回复 http 409,这符合我的用例。

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

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 中做些什么来提供与 postman 从我的管道中提供的相同风格的 HTTP Post?我相信这里最大的区别是什么使 POST 请求成为“二进制”帖子,而不是其他形式?

最佳答案

我不认为你可以用 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"

关于java - 如何在 Jenkins 中使用二进制文件执行 HTTP POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414072/

相关文章:

java套接字和DoS

jenkins - 我可以在 Jenkins 管道中动态创建阶段吗?

java - IntelliJ IDEA 无法运行 Grails 2.3.0 项目

sql - 如何在查询之后正确列出的地方执行SQl?

java - 读取字节数组时意外的长处理时间

java - 将程序转换为小程序

java - 如何使用 spring 连接到我的数据库并进行测试?

Maven clean 插件排除 .cvsignore

maven - 使用属性从 Maven 部署到 JFrog Artifactory

grails - 默认情况下如何使grails datePicker '0000-00-00 00:00:00'代替插入空白或null?