一尘不染

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

jenkins

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

我们正在使用的Pipeline插件中使用的Groovy库对于此任务应该是完美的。Groovy有一个扩展名,可以执行简单的POST,称为http-
builder
,但是我一生都无法确定如何在Jenkins的Groovy安装中使用它。

如果尝试在管道脚本中使用Grapes
Grab来使用它,则会出现错误,如此处所示

@Grapes(
    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)

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


阅读 1262

收藏
2020-07-25

共1个答案

一尘不染

也许我缺少了一些东西,但是为什么不只使用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")
2020-07-25