【问题标题】:Consuming web service消费网络服务
【发布时间】:2013-04-12 09:58:07
【问题描述】:

我正在调用这样的网络服务(使用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。有没有更简单的方法?此响应是否遵循某些“标准”,是否有让我的工作更轻松的功能?

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

    new XmlSlurper().parseText( response )
                    .MULTIPLE.SINGLE.KEY
                    .find { it.@name == 'id' }
                    .VALUE.text() == '1'
    

    name="id"检查KEY标签的VALUE1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多