我正在使用 IntelliJ IDEA 8 和 Axis 设置部署在 Tomcat5.5 上的 Web 服务。生成的 wsdl 如下所示:http ://track.priskick.se/Tracker.wsdl
方法被声明为
public void storeImpressionReport(int siteId, int adId, int zoneId, int count,
int excludeCount) { ... }
并暴露在网络服务中。接下来,我使用 Axis 构建客户端(也是 Java),但是由于使用参数对方法进行运行时调用0,0,0,0,0
,所以我得到了这个:
Tried to invoke method public void com.xxxxx.xxxx.xxxx.xxxxx.storeImpressionReport(int,int,int,int,int) with arguments java.lang.Integer,null,null,null,null. The arguments do not match the signature.; nested exception is: java.lang.IllegalArgumentException
将方法的参数数量减少到 1 使其工作,但这感觉像是一个非常愚蠢的限制和奇怪的行为。如果您知道这里可能出了什么问题,请帮助我 - 为什么我不能公开方法并让它们采用多个参数?
=== 更新
我现在尝试使用从 IntelliJ 生成的 wsdl 生成客户端 java,而不是使用 ?wsdl 选项调用服务。此 wsdl 保留正确的参数名称,可能是因为生成器可以访问源。现在我明白了
没有这样的操作 'siteId' AxisFault
这些是相关文件: http: //track.priskick.se/Tracker/TrackerSoapBindingStub.java http://track.priskick.se/Tracker/TrackerServiceTestCase.java http://track.priskick.se/Tracker/Tracker_PortType。 java http://track.priskick.se/Tracker/TrackerService.java http://track.priskick.se/Tracker/TrackerServiceLocator.java
用于客户端的 wsdl 位于 http://track.priskick.se/Tracker.wsdl
该服务位于 http://stage.klikki.com/services/Tracker
干杯马库斯约翰逊