Mit der Version 1.8.10 des http-request-Plugins für Jenkins (ich verwende 1.643) wird jetzt das POSTEN eines Texts in der Anfrage unterstützt - daher gilt dieser Thread nicht. Ich frage mich, wie diese Funktionalität in einem Groovy-Skript für Pipeline (v2.1) verwendet werden soll. Der Snippet-Generator enthält dieses neue Feld nicht, daher habe ich kein Beispiel, aus dem ich aufbauen könnte.
Ich habe verschiedene Möglichkeiten ausprobiert, um die JSON-Daten in den Anforderungshauptteil zu übertragen, aber mein Tomcat-Server gibt immer den Statuscode http 400 zurück: The request sent by the client was syntactically incorrect.
Dinge, die ich versucht habe:
def toJson = {
input ->
groovy.json.JsonOutput.toJson(input)
}
def body = [
displayName: [
text: "smoke test"],
description: [
text: "for smoke testing"],
genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: toJson(body), url: "https://${Host}", validResponseCodes: '200'
def body = [
displayName: [
text: "smoke test"],
description: [
text: "for smoke testing"],
genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: body, url: "https://${Host}", validResponseCodes: '200'
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: "{\"displayName\":{\"text\":"smoke test\"},\"description\":{\"text\":\"for smoke testing\"}, \"genusTypeId\":\"type\"}", url: "https://${Host}", validResponseCodes: '200'
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: "'{\"displayName\":{\"text\":"smoke test\"},\"description\":{\"text\":\"for smoke testing\"}, \"genusTypeId\":\"type\"'}", url: "https://${Host}", validResponseCodes: '200'
Beim Scannen des http-request
-Bibliothekscodes scheint es, als ob das Setzen dieses Flags funktionieren sollte. Ich weiß nicht, wie Pipeline-Plugins/Jenkins-Plugins funktionieren. Ich frage mich, ob der Code für Pipeline -> http-Anfrage diesen neuen Parameter berücksichtigt. Kann mir jemand zeigen, wie ich POSTs mit Anforderungskörpern für die Pipeline verwenden kann oder wo ich den Pipline-Plug-in-Code ändern muss, um die Verbindung herzustellen?
Ich denke das ist ein Bug. Ich habe hinzugefügt https://issues.jenkins-ci.org/browse/JENKINS-36203
und die PR: https://github.com/jenkinsci/http-request-plugin/pull/15