Comment publier des données JSON dans le corps avec Jenkins http-request plugin et du Pipeline?

Avec v1.8.10 de le http-request plugin pour Jenkins (je suis en cours d'exécution 1.643), il existe désormais un support pour l'Affichage d'un corps dans la demande, voilà ce fil ne s'applique pas. Je me demande comment utiliser cette fonctionnalité dans un Pipeline (v2.1) script Groovy? L'Extrait de code Générateur ne comprennent pas ce nouveau domaine, donc je n'ai pas d'exemple à d'.

Comment publier des données JSON dans le corps avec Jenkins http-request plugin et du Pipeline?

J'ai essayé plusieurs façons de récupérer les données JSON dans le corps de la requête, mais mon serveur Tomcat retourne toujours http 400 code d'état: The request sent by the client was syntactically incorrect.

Choses que j'ai essayé:

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'

De la numérisation de la http-request code de la bibliothèque, il semble que la définition de ce drapeau devrait fonctionner. Je ne sais pas comment Pipeline plugins /plugins Jenkins travail, donc je me demande si le Pipeline -> http-request code pour prendre en compte ce nouveau paramètre? Quelqu'un peut-il m'indiquer comment je peux faire des POSTs avec des corps de la demande de travail avec le Pipeline, ou lorsque j'ai besoin de modifier Pipline plugin code pour faire la connection?

  • Avez-vous essayé d'utiliser curl pour qui? Il a l'avantage d'être facilement testable dans le shell.
  • Je n'ai pas essayé...j'ai besoin d'extraire et de manipuler l'objet de réponse, et j'ai lu quelque part que c'est plus difficile à faire avec curl, donc je ne pense pas que ce soit une option viable.
InformationsquelleAutor user | 2016-06-21