Web服务不包含操作 - 它确实如此,但它以大写字母开头

时间:2013-05-22 12:26:10

标签: java web-services spring wsdl

我正在尝试为具有此WSDL的KashFlow编写SOAP客户端:

https://securedwebapp.com/api/service.asmx

它使用soapenc,所以我不能使用JAXB(和wsimport),因此我需要使用JAX-RPC。我已经设法使用wscompile和Eclipse Apache Axis插件创建Java类。

我正在使用Spring和JaxRpcPortProxyFactoryBean

<bean id="kashflowWebService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
    <property name="serviceInterface" value="kashflow.axisapi.KashFlowAPI"/>
    <property name="wsdlDocumentUrl" value="https://securedwebapp.com/api/service.asmx?WSDL"/>
    <property name="namespaceUri" value="KashFlow"/>
    <property name="serviceName" value="KashFlowAPI"/>
    <property name="portName" value="KashFlowAPISoap"/> 
</bean>

这一切似乎都很好,它正在寻找服务和端口。我有一个GetCurrencies操作请求,这是一个简单的操作,只需要用户名和密码。但是这会返回以下错误:

Caused by: port: {KashFlow}KashFlowAPISoap does not contain operation: getCurrencies

操作在那里,但称为“GetCurrencies”。在生成的类中,嵌入的字符串文字似乎都以大写字母开头,为什么错误提到以小写字母开头的操作?期望WSDL与Java方法命名约定匹配有什么关系?

据我所知,操作区分大小写,如果您正在为Java消费制作WSDL,那么您的操作将以小写开头,但我认为该服务是为.NET编写的,它们为C#提供示例,PHP等,但没有Java。

我尝试了两组不同的生成代码(wscompile和Axis wsdl2java),并尝试将Spring JAX-RPC更改为其他方法以查看是否有帮助。

如何强制它使用我提供的WSDL中定义的操作的正确名称?

0 个答案:

没有答案