Json powershell.exe:调用RestMethod:远程服务器返回错误:(406)不可接受

Json powershell.exe:调用RestMethod:远程服务器返回错误:(406)不可接受,json,powershell,jenkins,groovy,jenkins-pipeline,Json,Powershell,Jenkins,Groovy,Jenkins Pipeline,我在jenkinsfile中读取一个json响应,然后将其传递给一个stage,该stage通过从json响应中读取版本id来创建一个测试周期。我尝试了许多不同的方法来传递参数,但它总是显示错误406。我已将versionId存储在baseid变量中。如果我使用echo baseid,那么它可以工作,但如何在powershell脚本中使用它,如下所示。请帮忙 在添加测试循环阶段内检查版本ID def config = "Release" node {

我在jenkinsfile中读取一个json响应,然后将其传递给一个stage,该stage通过从json响应中读取版本id来创建一个测试周期。我尝试了许多不同的方法来传递参数,但它总是显示错误406。我已将versionId存储在baseid变量中。如果我使用echo baseid,那么它可以工作,但如何在powershell脚本中使用它,如下所示。请帮忙

在添加测试循环阶段内检查版本ID

def config = "Release"
node {
                            def vid = readJSON file: 'E:/Jenkins/workspace/27-investigate-process/script.json'
                            baseid = "${vid.id}"
                            
                            echo baseid
                            
}

pipeline 
{
 agent none

parameters {
    string(name: 'SPRINT_NUMBER', defaultValue: '9959')
    string(name: 'RELEASE_NUMBER', defaultValue: '60')
    string(name: 'CYCLE_NAME', defaultValue: '60')
}

stages 
{
    stage('Windows')
            {
                agent 
                {
                    node 
                    {
                        label "csharp.is.avb.com"
                        customWorkspace "E:/Jenkins/ws/${env.BRANCH_NAME}".take(30)
                    }
                
                }
                stages 
                {
                    stage("Adding Test Cycle") 
                    {
                        steps 
                        {   
                            echo baseid 
                            powershell label: '', script: '''$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
                            $headers.Add("Content-Type", "application/json")
                            $headers.Add("Authorization", "Basic E6WnlreEA5NDA5NTAyMzIy")
                            $headers.Add("Cookie", "JSESSIONID=D2C7FAFF013B856E8803F; atlassian.xsrf.token=B5DX-9S26-JQRI-OYXfd11236e12a575063_lin; sto-id=BHM")

                            $body = "{
                            `n  `"clonedCycleId`": `"`",
                            `n  `"name`": `"Official-${env:CYCLE_NAME}`",
                            `n  `"build`": `"`",
                            `n  `"environment`": `"`",
                            `n  `"description`": `"Create cycle with sprint`",
                            `n  `"startDate`": `"4/Dec/19`",
                            `n  `"endDate`": `"30/Dec/20`",
                            `n  `"projectId`": `"128`",
                            `n  `"versionId`": `"$baseid`"
                            `n}"

                            $response = Invoke-RestMethod \'https://jira.it.avb.com/rest/zapi/latest/cycle\' -Method \'POST\' -Headers $headers -Body $body
                            $response | ConvertTo-Json'''
                        }
                    }
                }
                
            }
   }

}我用脚本方法解决了这个问题。我创建了一个环境变量并在其中存储了版本id,然后在需要版本id的地方使用${env:VID}

script 
    {
        env.VID = versionid
    }

你看过HttpRequest插件了吗?这使得调用RESTAPI变得容易得多。是的,我试过了,但在我的案例中不起作用