Groovy HttpBuilder json 输入问题
Groovy HttpBuilder json input trouble
我在将 json 参数传递给网络操作时遇到问题。我知道网络操作在指定的 url http://projects.example.net/example/bugnetwebservice.asmx/MobileBuildAction
下运行,因为我已经使用 json 参数对它进行了测试:
{
featureIdStr: 31,
actionStr: 1,
comment: "Hello world"
}
并得到响应:
{
"d": "Succeeded"
}
每当我在 groovy 中尝试 运行 它时,我都会收到这样的回复:
Jun 10, 2016 9:54:25 AM net.sf.json.JSONObject _fromBean
INFO: Property 'value' of class org.codehaus.groovy.runtime.GStringImpl has no read method. SKIPPED
Failure: 500
这是我的代码:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
def http = new HTTPBuilder("http://projects.example.net/")
def issueId = 31
def msg = "Build Failed"
def jsonBody = [:]
jsonBody.put("featureIdStr", issueId)
jsonBody.put("actionStr", 0)
jsonBody.put("comment", "${msg}: <a href='http://www.google.com'}'>Googles Job</a>")
http.request(POST, JSON) {
uri.path = "/example/bugnetwebservice.asmx/MobileBuildAction"
body = jsonBody
response.success = { resp ->
println "Success! ${resp.status}"
}
response.failure = { resp ->
println "Failure: ${resp.status}"
}
}
请帮忙!
jsonBody.put("comment", "${msg}: http://www.google.com'}'>Googles Job")
Groovy 中的“”创建了一个 Groovy 字符串(又名 GString)。 GString 很棒——它们允许 ${}
语法——但它们在序列化和反序列化自身方面存在一些问题。有一个很棒的 Whosebug answer explaining what's up with that.
无论如何,简而言之,在 post 和我自己的经验之间:任何时候你比较或者 可能 序列化你的 Groovy字符串,先在上面调用toString()
。
我会考虑像这样编写您的代码:
def commentValue = "${msg}: <a href='http://www.google.com'}'>Googles Job</a>"
jsonBody.put( commentValue.toString() )
我在将 json 参数传递给网络操作时遇到问题。我知道网络操作在指定的 url http://projects.example.net/example/bugnetwebservice.asmx/MobileBuildAction
下运行,因为我已经使用 json 参数对它进行了测试:
{
featureIdStr: 31,
actionStr: 1,
comment: "Hello world"
}
并得到响应:
{
"d": "Succeeded"
}
每当我在 groovy 中尝试 运行 它时,我都会收到这样的回复:
Jun 10, 2016 9:54:25 AM net.sf.json.JSONObject _fromBean
INFO: Property 'value' of class org.codehaus.groovy.runtime.GStringImpl has no read method. SKIPPED
Failure: 500
这是我的代码:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
def http = new HTTPBuilder("http://projects.example.net/")
def issueId = 31
def msg = "Build Failed"
def jsonBody = [:]
jsonBody.put("featureIdStr", issueId)
jsonBody.put("actionStr", 0)
jsonBody.put("comment", "${msg}: <a href='http://www.google.com'}'>Googles Job</a>")
http.request(POST, JSON) {
uri.path = "/example/bugnetwebservice.asmx/MobileBuildAction"
body = jsonBody
response.success = { resp ->
println "Success! ${resp.status}"
}
response.failure = { resp ->
println "Failure: ${resp.status}"
}
}
请帮忙!
jsonBody.put("comment", "${msg}: http://www.google.com'}'>Googles Job")
Groovy 中的“”创建了一个 Groovy 字符串(又名 GString)。 GString 很棒——它们允许 ${}
语法——但它们在序列化和反序列化自身方面存在一些问题。有一个很棒的 Whosebug answer explaining what's up with that.
无论如何,简而言之,在 post 和我自己的经验之间:任何时候你比较或者 可能 序列化你的 Groovy字符串,先在上面调用toString()
。
我会考虑像这样编写您的代码:
def commentValue = "${msg}: <a href='http://www.google.com'}'>Googles Job</a>"
jsonBody.put( commentValue.toString() )