我正在使用Groovy尝试在Jenkinsfile中执行API调用,并尝试返回JSON响应。
def url = “some url link”
def connection = new URL(url).openConnection()
jsonSlurper = new JsonSlurperClassic()
connection.setRequestProperty(“Content-Type”, “application/json”)
connection.setRequestMethod(“POST”)
connection.doOutPut = true
connection.connect()
def response = jsonSlurper.parseText(connection.getInputStream().getText())
如果我只运行第一段代码,我会得到一个错误:
导致:java.io.非序列化异常:groovy.json.JsonSlurperClassic
我也试过只使用JsonSlurper,但也遇到了同样的错误。
我试着在上面的每一行后面做一个回显,看起来在做getInputStream部分的时候很困难。我已经在本地测试过了,它工作得很好。有什么线索吗?谢谢!
1条答案
按热度按时间uubf1zoe1#
你应该这样写:
Jenkins提到NotSerializableException是因为这正是它想要做的:序列化,也就是说把你的运行时代码写到磁盘上。它不能用你的代码来做这件事。这里有更多的信息:https://www.jenkins.io/doc/book/pipeline/cps-method-mismatches/
然而这个装饰器看起来并不优雅。你应该尝试使用专用的步骤来达到这个目的:https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readjson-read-json-from-files-in-the-workspace