我在學習如何使用WSDL從Grails項目調用Web服務。我已經提供了WSDL和一些XML結果供參考。瞭解WSDL,SOAP,REST等
我已經能夠從WSDL生成Java代碼,並且一切似乎都正常工作。
這裏的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無效?我是否錯過/誤解了這裏的難題?這對我來說都很新鮮。
編輯: 我試圖用一個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定義傳遞給解析器嗎? – 2013-03-09 23:18:32
我不確定。我使用的插件需要一個wsdl,並且我在配置中提供了它。它被用來生成Java類。我不知道它是否能夠將它傳遞到任何需要去的地方,但我會認爲它確實如此。 – 2013-03-09 23:26:26