如何将HTTP请求的正文设置为文件的内容

时间:2019-01-22 20:18:35

标签: jenkins httprequest jenkins-pipeline

我想使用我工作空间中文件的内容作为主体从Jenkins管道调用RESTful端点。我正在尝试使用HTTP请求插件(https://plugins.jenkins.io/http_request),但不知道如何执行此操作。 基本流程: 1)从源代码管理(例如GitHub)获取文件 2)使用Shell脚本使用sed更新我的工作区中的文件 3)使用该文件作为HTTP请求调用的正文

我一直试图将文件的内容复制到变量中,然后在请求中使用它,但这没用,因为我似乎无法弄清楚如何将文件内容保存到变量中然后引用它在下一步中。

2 个答案:

答案 0 :(得分:1)

您要:

  1. 使用readFile
  2. 读取文件
  3. 将其用作httpRequest call
  4. 中的responseBody

别忘了适当设置内容类型和http标头。

答案 1 :(得分:0)

这是我现在正在使用的简单管道,如果其他人正在尝试实现此管道,可以用作示例。请注意,我必须调整Blue Ocean创建的代码,因为它会将环境变量放在单引号中。

pipeline {
  agent any
  stages {
    stage('stage1') {
      steps {
        httpRequest(url: 'http://banka.mybluemix.net/loans/v1/quote?loanAmount=9501.64&annualInterestRate=28&termInMonths=36', acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'GET', responseHandle: 'STRING', validResponseCodes: '200', outputFile: 'body.json')
        script {
          env.requestBody = readFile 'body.json'
        }

        echo "${env.requestBody}"
        httpRequest(url: 'https://postman-echo.com/post', acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'POST', outputFile: 'postmanOutput.txt', requestBody: "${env.requestBody}", responseHandle: 'STRING', validResponseCodes: '200')
        script {
          env.POSTMANOUT = readFile 'postmanOutput.txt'
        }

        echo "${env.POSTMANOUT}"
      }
    }
  }
}