我需要使用有效负载进行API调用(一切都需要完全一样(
{"file": "//'HLQ.DATASET(MEMBER)'"}
詹金斯管道中。我想不出有效载荷的正确逃逸。问题是圆括号、单转义(Groovy抱怨(、双转义(其中一个斜杠将气泡一直插入curl调用(。
def String job = """{\"file\": \"\'HLQ.DATASET\(MEMBER\)\'\"}"""
...
script {
def String response = sh(script: " curl -X PUT -w %{http_code} -v --header 'Content-Type: application/json' --cookie cookies.txt --header 'X-CSRF-ZOSMF-HEADER: dummy' --header 'X-IBM-Notification-URL: ${hook.getURL()}' https://.../zosmf/restjobs/jobs --data '$job'", returnStdout: true).trim()
}
如果您正在检查Jenkins控制台输出以确定消息是否正确发送,则会误导您。您在控制台输出中看到的并不总是经过解释的字符串。
你能试试下面的吗?此外,为了检查Curl发送的内容,您可以使用类似--trace
的标志
def job = "{"file": "//'HLQ.DATASET(MEMBER)'"}"
writeFile(file: 'payload.txt', text: job)
sh 'cat payload.txt'
def String response = sh(script: "curl -X PUT -w %{http_code} -v --header 'Content-Type: application/json' --cookie cookies.txt --header 'X-CSRF-ZOSMF-HEADER: dummy' --header 'X-IBM-Notification-URL: ${hook.getURL()}' https://.../zosmf/restjobs/jobs --data @payload.txt", returnStdout: true).trim()