我正在调用这样的Web服务(使用rest插件):
withRest(uri: "http://server.com") {
def response = post(path: '/webservice', query: [q: 'test'])
// process response
}
并得到以下响应:
<?xml version="1.0" encoding="UTF-8" ?>
<RESPONSE>
<MULTIPLE>
<SINGLE>
<KEY name="id">
<VALUE>1</VALUE>
</KEY>
<KEY name="courseid">
<VALUE>1</VALUE>
</KEY>
<KEY name="name">
<VALUE>test</VALUE>
</KEY>
<KEY name="description">
<VALUE>Test</VALUE>
</KEY>
<KEY name="descriptionformat">
<VALUE>1</VALUE>
</KEY>
<KEY name="enrolmentkey">
<VALUE>TEST</VALUE>
</KEY>
</SINGLE>
</MULTIPLE>
</RESPONSE>
我想将此响应转换为对象,以便可以执行以下操作:
assert responseMap.id == 1
我知道如何做到这一点的唯一方法是在上面的
// process request
块中使用Gpath表达式来获取单个条目并构建我的responseMap
。有没有更简单的方法?此响应是否遵循某些“标准”,是否有使我的工作更轻松的功能?
最佳答案
您可以这样做:
new XmlSlurper().parseText( response )
.MULTIPLE.SINGLE.KEY
.find { it.@name == 'id' }
.VALUE.text() == '1'
用
VALUE
检查KEY
标签的name="id"
是1
关于rest - 消费网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968358/