Avec la version 1.8.10 du plug-in http-request pour Jenkins (version 1.643), la prise en charge de la publication d'un corps dans la demande est désormais d'application. Le thread ne s'applique donc pas. Je me demande comment utiliser cette fonctionnalité dans un script Groovy Pipeline (v2.1)? Le générateur d'extraits de code n'inclut pas ce nouveau champ. Je n'ai donc aucun exemple à partir duquel construire.
J'ai essayé différentes méthodes pour obtenir les données JSON dans le corps de la demande, mais mon serveur Tomcat renvoie toujours le code d'état http 400: The request sent by the client was syntactically incorrect.
Choses que j'ai essayées:
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'
En analysant le code de la bibliothèque http-request
, il semble que la définition de cet indicateur devrait fonctionner. Je ne sais pas comment fonctionnent les plugins Pipeline/Jenkins, alors je me demande si le code Pipeline -> http-request représente ce nouveau paramètre? Quelqu'un peut-il m'indiquer comment faire en sorte que les POST utilisant des corps de requête fonctionnent avec le pipeline ou dans quels endroits je dois modifier le code du plug-in Pipline pour établir la connexion?
Je pense que c'est un bug. J'ai ajouté https://issues.jenkins-ci.org/browse/JENKINS-36203
et le PR: https://github.com/jenkinsci/http-request-plugin/pull/15