如何从 Jenkins Groovy 脚本中执行 HTTP POST 请求?
How can I perform HTTP POST requests from within a Jenkins Groovy script?
我需要能够在 Jenkins Pipeline 构建期间创建简单的 HTTP POST 请求。但是我不能使用简单的 curl sh 脚本,因为我需要它在 Windows 和 Linux 节点上工作,如果可以避免的话,我不希望在节点上强制安装更多工具。
我们正在使用的 Pipeline 插件中使用的 Groovy 库应该非常适合这项任务。有一个扩展可用于 Groovy 来执行简单的 POSTs,称为 http-builder,但我无法在我的生活中弄清楚如何在 Jenkins 中使用它 Groovy 安装.
如果我尝试在 Pipeline 脚本中使用 Grapes Grab 来使用它,我会收到一个失败的错误,as seen here。
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
也许 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¶m2=def")
对于 Jenkin 的管道,我建议安装 "HTTP-Request" plugin
它很好地集成在 groovy 中,因此您可以像这样使用它:
def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"
我需要能够在 Jenkins Pipeline 构建期间创建简单的 HTTP POST 请求。但是我不能使用简单的 curl sh 脚本,因为我需要它在 Windows 和 Linux 节点上工作,如果可以避免的话,我不希望在节点上强制安装更多工具。
我们正在使用的 Pipeline 插件中使用的 Groovy 库应该非常适合这项任务。有一个扩展可用于 Groovy 来执行简单的 POSTs,称为 http-builder,但我无法在我的生活中弄清楚如何在 Jenkins 中使用它 Groovy 安装.
如果我尝试在 Pipeline 脚本中使用 Grapes Grab 来使用它,我会收到一个失败的错误,as seen here。
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
也许 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¶m2=def")
对于 Jenkin 的管道,我建议安装 "HTTP-Request" plugin
它很好地集成在 groovy 中,因此您可以像这样使用它:
def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"