groovy.json.JsonException:无法确定当前字符,它不是z/OS上的字符串、数字、数组或对象(groovy-2.4.12)

groovy.json.JsonException:无法确定当前字符,它不是z/OS上的字符串、数字、数组或对象(groovy-2.4.12),groovy,httpbuilder,Groovy,Httpbuilder,我试图在Groovy中运行RESTClient,使用下面的代码执行HTTP PUT请求,但是我面临一个问题 def jsonObj = JsonOutput.toJson(version) println(jsonObj) def jsonObjtrim = jsonObj.trim() println("**** FIND 1ST CHAR *******") println((int)jsonObjtrim.charAt(0)) def response = client.put(path:

我试图在Groovy中运行RESTClient,使用下面的代码执行HTTP PUT请求,但是我面临一个问题

def jsonObj = JsonOutput.toJson(version)
println(jsonObj)
def jsonObjtrim = jsonObj.trim()
println("**** FIND 1ST CHAR *******")
println((int)jsonObjtrim.charAt(0))
def response = client.put(path: "/cli/snapshot/createSnapshot",
            contentType: "application/json",
            body: "$jsonObjtrim",
            headers: [Accept: 'application/json'])
println("JSON value is $jsonObj")
在构造JSON之后,我让上面的代码打印JSON值,以确保传递的值正确,并且可以在下面的输出中看到。在下面打印的错误中,第一行是我构造的JSON,第三行确认JSON对象的第一个字符是{,因为根据日志,这就是错误所在

输出日志

{"name":"RESTSnapshot3","application":"JKEBank","description":"Requesting deployment","versions":[{"Mortgage":"448.20170828-1755250845"},{"Mortgage":"845.20190507-1820230086"}]}
**** FIND 1ST CHAR *******
123
Nov 11, 2019 2:39:02 PM groovyx.net.http.HTTPBuilder$1 handleResponse
WARNING: Error parsing 'text/plain;charset=UTF-8' response
groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object

The current character read is 'E' with an int value of 69
Unable to determine the current character, it is not a string, number, array, or object
line number 1
index number 0
Error processing command: A JSONObject text must begin with '{' at character 1 of ?????z???????????k???????????z?????k???????????z?????????@??????????k????????z?????????z???K????????`???????????k????????z???K????????`????????????
    at org.apache.groovy.json.internal.JsonParserCharArray.decodeValueInternal(JsonParserCharArray.java:202)
at org.apache.groovy.json.internal.JsonParserCharArray.decodeValue(JsonParserCharArray.java:153)
at org.apache.groovy.json.internal.JsonParserCharArray.decodeFromChars(JsonParserCharArray.java:42)
at org.apache.groovy.json.internal.JsonParserCharArray.parse(JsonParserCharArray.java:380)
at org.apache.groovy.json.internal.BaseJsonParser.parse(BaseJsonParser.java:131)
at groovy.json.JsonSlurper.parse(JsonSlurper.java:218)
at groovyx.net.http.ParserRegistry.parseJSON(ParserRegistry.java:280)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:507)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1080)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at groovyx.net.http.HTTPBuilder.parseResponse(HTTPBuilder.java:560)
at groovyx.net.http.HTTPBuilder$1.handleResponse(HTTPBuilder.java:489)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:223)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:515)
at groovyx.net.http.RESTClient.put(RESTClient.java:163)
at groovyx.net.http.RESTClient$put$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at groovy_script_7303971688153863540.run(groovy_script_7303971688153863540.groovy:146)
at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:263)
at groovy.lang.GroovyShell.run(GroovyShell.java:518)
at groovy.lang.GroovyShell.run(GroovyShell.java:507)
at groovy.ui.GroovyMain.processOnce(GroovyMain.java:653)
at groovy.ui.GroovyMain.run(GroovyMain.java:384)
at groovy.ui.GroovyMain.process(GroovyMain.java:370)
at groovy.ui.GroovyMain.processArgs(GroovyMain.java:129)
at groovy.ui.GroovyMain.main(GroovyMain.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:507)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:131)

请注意,这在我的IntellIJ上的Groovy 2.5.6上非常有效,但当我在当前运行在Groovy 2.4.12上的大型机z/OS上的基于Linux的OMV上执行它时,它就不起作用了。此外,我尝试了HTTPBuilder 0.5.0/0.5.2/0.7.1,但仍然有相同的响应。

我会加快日志记录,你看到真正发送的是什么了吗,或者只是尝试一下curl/httpie这台机器。错误可能意味着,您刚刚取回了某个网站(例如某个公司代理)。此外,
“$jsonObjtrim”
只是
jsonObjtrim
,因为它已经是一个字符串;RESTBuilder可以处理JSON序列化-您可以将
version
作为正文。@cfrick我不能在这台机器上使用CURL,因为它是z/OS上的Unix(IBM大型机)而且它的容器中没有卷曲。我尝试在put请求的主体中传递字符串而不是jsonobject,但得到了相同的响应。我在原始问题语句中添加了日志。groovy脚本在遵循EBCDIC编码的机器上运行,这会不会是一个问题,因为接收我的HTTP put的服务器是一个常规的L因努克斯机器?
Caught: groovyx.net.http.ResponseParseException: status code: 400, reason phrase: Bad Request
groovyx.net.http.ResponseParseException: status code: 400, reason phrase: Bad Request
    at groovyx.net.http.HTTPBuilder$1.handleResponse(HTTPBuilder.java:495)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:223)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:515)
    at groovyx.net.http.RESTClient.put(RESTClient.java:163)
    at groovyx.net.http.RESTClient$put$0.call(Unknown Source)
    at groovy_script_7303971688153863540.run(groovy_script_7303971688153863540.groovy:146)
Caused by: groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object
    ^