Grails支持使用Web服务

时间:2011-07-15 16:43:36

标签: grails

Grails是否提供内置或通过插件支持来使用(而不是生成)基于XML的REST或SOAP Web服务(尤其是REST)?

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

对于基于SOAP的Web服务,请使用WSClient。该插件是GroovyWS的包装器。在幕后,Apache CXF正在那里工作。

答案 2 :(得分:1)

过去,我创建了一个脚本(grails create-script),该脚本使用wsimport在java src目录中创建POJO。每次运行脚本时,如果生成的目录首先存在,它将删除生成的目录,然后生成新文件。

我之所以这样做,是因为正在开发的API正在开发中,我希望在添加新功能时能够轻松使用最新且最好的。

答案 3 :(得分:0)

在grails 3.x中,您可以使用build.gradle中的插件

compile 'com.github.groovy-wslite:groovy-wslite:1.1.2'

然后将导入添加到控制器,如http://guides.grails.org/grails-soap/guide/index.html

import wslite.soap.*
import wslite.soap.SOAPClient
import wslite.soap.SOAPResponse

并使用https://github.com/jwagenleitner/groovy-wslite

中提供的示例
def client = new SOAPClient('http://www.holidaywebservice.com/Holidays/US/Dates/USHolidayDates.asmx')
def response = client.send(SOAPAction:'http://www.27seconds.com/Holidays/US/Dates/GetMothersDay') {
body {
    GetMothersDay('xmlns':'http://www.27seconds.com/Holidays/US/Dates/') {
        year(2011)
    }
}
}

assert "2011-05-08T00:00:00" == response.GetMothersDayResponse.GetMothersDayResult.text()
assert 200 == response.httpResponse.statusCode
assert "ASP.NET" == response.httpResponse.headers['X-Powered-By']

render (response.GetMothersDayResponse.GetMothersDayResult.text())