wake-up-neo.com

Wie man POST JSON-Daten im Body mit Jenkins http-Request-Plugin und Pipeline?

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.

 Snippet Generator

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?

5
user
1
Isaac Cohen