Я пытаюсь узнать, как использовать WSDL для вызова веб-сервисов из проекта Grails. Мне предоставили WSDL и некоторые XML-результаты для справки.Понимание WSDL, SOAP, REST и т. Д.
Я смог сгенерировать Java-код из WSDL, и все, кажется, работает правильно.
Вот WSDL: http://www.restfulwebservices.net/rest/USAZipCodeService.svc?wsdl
И вот XML: http://api.geonames.org/postalCodeSearch?placename=MN&username=demo
Я получаю это исключение в моем проекте:
ERROR client.WebServiceClientFactoryImpl $ WSClientInvocationHandler - Нет пространства имен на "GeoNames" элемент. javax.xml.ws.soap.SOAPFaultException: Нет пространства имен в элементе "geonames".
Кажется, что он говорит, что возвращенный XML недействителен для SOAP? Я упускаю/недопонимаю некоторые части головоломки здесь? Для меня это совсем ново.
Edit: Я пытаюсь использовать плагин Grails под названием CXF клиент: https://github.com/ctoestreich/cxf-client
Он настроен следующим в Config.groovy (что-то может быть неправильно/здесь отсутствует?):
wsdl = "http://www.restfulwebservices.net/wcf/USAZipCodeService.svc?wsdl"
namespace = "cxf.client.postalcode"
clientInterface = "cxf.client.postalcode.IPostalCodeService"
serviceEndpointAddress = "http://api.geonames.org/postalCodeSearch"
Вы уверены, что передаете определение wsdl вашему парсеру? –
Я не уверен. Плагин, который я использую, требует wsdl, и я предоставил его в конфигурации. Он использовался для генерации классов Java. Я не знаю, обрабатывает ли он его в любом месте, куда ему нужно идти, но я думаю, что так оно и есть. –