The good thing here is that the client does not have to know about the Book class. It is automatically generated during the proxy creation time and can be used by your client. Here it is located in the
defaultnamespace package since no package was used on the server side.
Here is how the client looks like now:
import groovyx.net.ws.WSClient def proxy = new WSClient("http://localhost:6981/BookService?wsdl", this.class.classLoader) proxy.initialize() // from 0.5.0 def books = proxy.getBooks() for (book in books) println book def book = proxy.create("defaultnamespace.Book") book.title = "Groovy in Action" book.author = "Dierk" book.isbn = "123" proxy.addBook(book) def bks = proxy.getBooks() println bks.books.isbn
Iterating over the books is slightly more complicated since SOAP wrap the arrays in an element (in our case ArrayOfBook). Therefore you have to extract a field from that element. In our case:
def aob = proxy.getBooks() for (book in aob.books) println book.name