rest - 消费网络服务

标签 rest grails groovy apache-httpclient-4.x httpbuilder

我正在调用这样的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/

相关文章:

php - POST文件Curl命令行到PHP Curl

grails - 全局@Resource格式优先级

generics - GroovyAST 在编译时添加通用字段

java - Groovy:从文件中读取一系列行

rest - kubernetes - 通过 REST-Call 列出所有 namespace 的入口

java - 在 Docker 中对端点进行 REST 调用

sql - Grails 多对多 sql

grails - Font Awesome无法加载资源/font/fontawesome-webfont.woff?v=3.0.1

java - 奇怪的 float 除法结果

mysql - 如何使用 HTTP POST 为 SQL 数据库设置正确的主键?