southArbor 2017-01-12 02:38 采纳率: 0%
浏览 12210

调用webservice接口,call.setOperationName的参数问题

本人刚开始用webservice,很多不懂,还望大神赐教啊,拜谢
我用Java调用webservice接口,用的是org.apache.axis包的类,关键代码如下:
Call call = null;
try {
call = (Call)service.createCall();
call.setTargetEndpointAddress(new URL("http://localhost:8081/UserService?wsdl"));
call.setProperty("axis.connection.timeout", new Integer(3600000));
call.setTimeout(new Integer(3600000));
//call.setOperationName(new javax.xml.namespace.QName("http://webservice.web.demo.com/", "queryUsers")); //用这句可以正常调用
call.setOperationName("queryUsers");//用这句就报错说找不到匹配的方法
Object res=call.invoke(new Object[]{});
PrintWriter out = response.getWriter();
out.println(res);
}catch (Exception e) {
e.printStackTrace();
}

其中,call.setOperationName的时候如果指定QName的namespaceURL和方法名就可以正常调用,如果不指定namespaceURL只写方法名就报错说找不到匹配的方法。我就想知道指定namespace和不指定有什么区别啊?什么时候可以不指定namespaceURL?我查了网上的代码,很多都直接写方法名没指定namespace呀。实在困惑,摆脱摆脱了

  • 写回答

1条回答

  • 编程爱好者熊浪 2017-01-12 03:13
    关注

    明显是有2个相同的方法,你没有指定namespace,也就是命名空间,她就回去查所有的叫这个方法名的方法,如果只有一个,那好,就找到了方法,如果有多个,它就不知道选择哪个了,如果你指定了命名空间,要知道在同一个命名空间,取完全相同的名字,编译器是会报错的,也就是同一个命名空间不会有相同的名字,这时候,你指定了命名空间,你找的名字就唯一了。

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面