如何在Jenkins Groovy脚本中执行HTTP POST请求?

如何在Jenkins Groovy脚本中执行HTTP POST请求?,jenkins,groovy,jenkins-plugins,jenkins-workflow,Jenkins,Groovy,Jenkins Plugins,Jenkins Workflow,我需要能够在构建过程中创建简单的HTTP POST请求。但是,我不能使用简单的curl-sh脚本,因为我需要它在Windows和Linux节点上工作,如果可以避免的话,我不希望在节点上强制安装更多的工具 我们正在使用的管道插件中使用的Groovy库应该非常适合这个任务。Groovy有一个扩展可以执行简单的POST,名为,但我一辈子都无法解决如何在Jenkins的Groovy安装中使用它 如果我试图使用Grapes Grab在管道脚本中使用它,我会得到一个错误,但没有这样做 Groovy Jenk

我需要能够在构建过程中创建简单的HTTP POST请求。但是,我不能使用简单的curl-sh脚本,因为我需要它在Windows和Linux节点上工作,如果可以避免的话,我不希望在节点上强制安装更多的工具

我们正在使用的管道插件中使用的Groovy库应该非常适合这个任务。Groovy有一个扩展可以执行简单的POST,名为,但我一辈子都无法解决如何在Jenkins的Groovy安装中使用它

如果我试图使用Grapes Grab在管道脚本中使用它,我会得到一个错误,但没有这样做


Groovy Jenkins使用的捆绑版本可能不支持Grapes Grab。是否可以简单地下载http builder及其依赖项并将其添加到节点的Jenkins Groovy安装中?

也许我遗漏了一些东西,但为什么不使用已经在Jenkins类路径上的标准java库呢

import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.net.URL
import java.net.URLConnection

def sendPostRequest(urlString, paramString) {
    def url = new URL(urlString)
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())

    writer.write(paramString)
    writer.flush()
    String line
    def reader = new BufferedReader(new     InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
      println line
    }
    writer.close()
    reader.close()
}

sendPostRequest("http://www.something.com", "param1=abc&param2=def")

对于詹金的管道,我建议安装

它很好地集成在groovy中,因此您可以这样使用它:

def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"

遗憾的是,这与Jenkins如何与之整合有关。事情没有那么简单/我认为您需要括号-@Grapes([@Grab(…)])非常重要的限制:它不允许以编程方式添加标题。它允许:
httpRequest customHeaders:[[name:'FOO',value:'BAR']],url:'http://company.com“
为了安全起见,请注意:“每次执行都将记录所有参数。注意不要传递密码或个人信息等私人信息”(引用官方文档),因为脚本安全插件不允许调用URL.openConnection()方法
def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"