描述
在做Webservice接口的时候发现一个问题,Webservice测试类中有两个方法,一个是helloWorld一个是SayHello(String name),调用helloWorld的时候能正常输出返回值,因为这个方法不带参数,但是在使用SayHello的方法时就会出错,报出namespace mismatch XXXXX 这个问题查了很久,主要说是Webservice的发部方式引起的问题,具体不知。
解决
在调用时的客户端类中设置一下namespace,因为调用写法很多,所以我在下方列出一种比较简单的调用方法[color=red]#具体的namespace查看方式可以看控制台报的错误信息获取也可以通过完整Webservice访问地址加上?wsdl来查看配置信息,里面也有namespace#[/color]。
在做Webservice接口的时候发现一个问题,Webservice测试类中有两个方法,一个是helloWorld一个是SayHello(String name),调用helloWorld的时候能正常输出返回值,因为这个方法不带参数,但是在使用SayHello的方法时就会出错,报出namespace mismatch XXXXX 这个问题查了很久,主要说是Webservice的发部方式引起的问题,具体不知。
解决
在调用时的客户端类中设置一下namespace,因为调用写法很多,所以我在下方列出一种比较简单的调用方法[color=red]#具体的namespace查看方式可以看控制台报的错误信息获取也可以通过完整Webservice访问地址加上?wsdl来查看配置信息,里面也有namespace#[/color]。
try {
//调用地址
String endpoint = "http://localhost:8080/smsp/services/MainControl";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
//调用方法名称和nameSpace域名配置
call.setOperationName(new QName("http://webservice.smsp.withub.net.cn", "sayH"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
//调用及传参,#返回的类型#如果不同记住进行修改这里是默认转的(String),如果传参需要多个,只需要在Object数组中增加
String ret = (String) call.invoke(new Object[] {"Jim"});
} catch (Exception ex) {
ex.printStackTrace();
}
本文介绍了解决Webservice接口调用中出现的namespacemismatch问题的具体步骤。通过设置正确的namespace,成功调用了带有参数的方法SayHello(String name)。
965

被折叠的 条评论
为什么被折叠?



