为什么我的pipilne脚本中curl命令的结果返回缺少的值

为什么我的pipilne脚本中curl命令的结果返回缺少的值,curl,jenkins-pipeline,jenkins-groovy,Curl,Jenkins Pipeline,Jenkins Groovy,我正在使用CA服务虚拟化,它允许使用特定POST请求从一个Swagger文件创建一个虚拟服务。我正试图从jenkins管道执行类似的post请求,但是当我运行构建时,我得到一个错误,表示缺少值 工作curl命令是: curl -X POST "http://localhost:1505/lisa-virtualize-invoke/api/v3/vses/VSE/services" -H "accept: application/json" -H "Content-Type: multipa

我正在使用CA服务虚拟化,它允许使用特定POST请求从一个Swagger文件创建一个虚拟服务。我正试图从jenkins管道执行类似的post请求,但是当我运行构建时,我得到一个错误,表示缺少值

工作curl命令是:

curl -X POST "http://localhost:1505/lisa-virtualize-invoke/api/v3/vses/VSE/services" -H  "accept: application/json" -H  "Content-Type: multipart/form-data" -F "config={"virtualService":{"version":"2","name":"API_Test_22","description":"Invoke API V2","status":""},"transportProtocol":{"typeId":"HTTP","basePath":"/","useGateway":true,"hostHeaderPassThrough":false},"dataProtocol":{"forRequest":true,"typeId":"RESTDPH"}}" -F "deploy=true" -F "inputFile1=@petstore-swagger.json;type=application/json"
为了让curl命令在jenkins管道中工作,我已经奋斗了很长时间。我和他有很多问题

 "
人物。在多次尝试之后,我的构建现在似乎成功了,但是缺少值,并且没有创建虚拟服务。我觉得很绝望,我不知道如何解决它。(我使用的是GitHub one,而不是下面的本地炫耀文件):

}

jenkins的输出是:

Started by user Marcin Kulik
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/test-bash-in-pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (build)
[Pipeline] sh
+ curl -X POST -H authorization: Basic bWt1bGlrOm1qc2tleURCQ0g3MzUlXiY=    http://10.0.2.2:1505/lisa-virtualize-invoke/api/v3/vses/VSE/services -H accept: application/json -H Content-Type: multipart/form-data -F config={virtualService:{version:2,name:API_Test_22,description:Invoke API V2,status:},transportProtocol:{typeId:HTTP,basePath:/,useGateway:true,hostHeaderPassThrough:false},dataProtocol:{forRequest:true,typeId:RESTDPH}} -F deploy=true -F fileInput1=https://github.com/marcin-kulik/devttest-test/blob/master/petstore-swagger.json
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed

 0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   923    0   293  100   630    559   1202 --:--:-- --:--:-- --:--:--  1761
{"error":{"type":"JSONException","message":"Missing value. at character 77 of {virtualService:{version:2,name:API_Test_22,description:Invoke API V2,status:},transportProtocol:{typeId:HTTP,basePath:/,useGateway:true,hostHeaderPassThrough:false},dataProtocol:{forRequest:true,typeId:RESTDPH}}"}}[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
看起来不接受空的“状态”值

您需要删除此键。

看起来不接受空的“状态”值


您需要删除此键。

对于双引号问题,请尝试使用简单引号,这样可以简化操作

pipeline {
    agent { label 'master' }
    stages {
        stage('build') {
            steps {
                sh 'curl -X POST -H "authorization: Basic xxx" "http://0.0.0.0/lisa-virtualize-invoke/api/v3/vses/VSE/services" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F \'config={"virtualService":{"version":"2","name":"API_Test_22","description":"Invoke API V2","status":""},"transportProtocol":{"typeId":"HTTP","basePath":"/","useGateway":true,"hostHeaderPassThrough":false},"dataProtocol":{"forRequest":true,"typeId":"RESTDPH"}}\' -F "deploy=true" -F "fileInput1=https://github.com/marcin-kulik/devttest-test/blob/master/petstore-swagger.json"'
            }
        }
    }
}

无论如何,对于您的错误,似乎不允许状态字段的值为空。

对于双引号问题,请尝试使用简单引号,这样可以缓解问题

pipeline {
    agent { label 'master' }
    stages {
        stage('build') {
            steps {
                sh 'curl -X POST -H "authorization: Basic xxx" "http://0.0.0.0/lisa-virtualize-invoke/api/v3/vses/VSE/services" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F \'config={"virtualService":{"version":"2","name":"API_Test_22","description":"Invoke API V2","status":""},"transportProtocol":{"typeId":"HTTP","basePath":"/","useGateway":true,"hostHeaderPassThrough":false},"dataProtocol":{"forRequest":true,"typeId":"RESTDPH"}}\' -F "deploy=true" -F "fileInput1=https://github.com/marcin-kulik/devttest-test/blob/master/petstore-swagger.json"'
            }
        }
    }
}

无论如何,对于您的错误,似乎不允许状态字段为空值。

删除状态键后的类似输出:{“错误”:{“类型”:“JSONException”,“消息”:“缺少值”。在{virtualService:{version:2,名称:API_Test_22,说明:调用API V2}的字符111处,传输协议:{typeId:HTTP,basePath://,useGateway:true,hostHeaderPassThrough:false},dataProtocol:{forRequest:true,typeId:RESTDPH}}}}}[Pipeline]/[Pipeline]//stage[Pipeline]}[Pipeline]//节点[Pipeline]管道结束:成功删除状态键后的类似输出:{“error”:{“type”:“JSONException”,“message”:“缺少值。在{virtualService:{version:2,name:API_Test_22,description:Invoke API V2},transportProtocol:{typeId:HTTP,basePath:/,useGateway:true,hostHeaderPassThrough:false},dataProtocol:{forRequest:true,typeId:RESTDPH}}}}{[Pipeline]}[Pipeline]//stage[Pipeline]}[Pipeline]//节点[Pipeline]管道结束:SUCCESSWould super建议将主体设置为映射,然后在Groovy中以本机方式将其转换为JSON。请您再解释一点,因为我不确定我是否理解thxWould super建议将主体设置为映射,然后在Groovy中以本机方式将其转换为JSON。请您再解释一点,因为我是这样的我不确定我是否理解thxYes,这是Groovyys中引号和解析Json的问题,这是Groovy中引号和解析Json的问题