[code="java"] public static void main(String[] args) {
try{
//标识WebService的具体路径
String endpoint = "http://project.test.gov.cn/api/test.asmx?wsdl";
//创建Service实例
Service service = new Service();
//通过Service实例创建Call实例
Call call = (Call)service.createCall();
//将WebService的服务路径加入到Call实例中,并为Call设置服务的位置
URL url = new URL(endpoint);
call.setTargetEndpointAddress(url);
//调用WebService方法
//call.setOperationName("AddInfo");
call.setOperationName(new QName("http://www.test.net/api/","AddInfo"));
//由于需要认证,故需要设置调用的用户名和密码。
call.getMessageContext().setUsername("aaa");// 设置用户名。
call.getMessageContext().setPassword("bbb");// 设置密码
//调用WebService传入参数
String res = (String)call.invoke(new Object[] {getXml()});
System.out.println(res);
}catch(Exception e){
e.printStackTrace();
}
}[/code]
http://gaozi131.iteye.com/blog/516309这个调用天气预报的我发现就可以,为啥我的不可以呢
[code="java"]
call.setOperationName(new QName("http://www.test.net/api/","AddInfo"));
[/code]
这里可能有错误(把/api去掉试试)参照下面说的,就是楼上贴的网址
[code="java"]
call.setSOAPActionURI("http://WebXml.com.cn/"+"getWeather");
[/code]
这个方法网上好多地方都只是传入一个URI,就是那个wsdl的命名空间,这是错的,必须接上我们要调用的接口方法
[code="java"]
public static void main(String[] args) {
try{
//标识WebService的具体路径
String endpoint = "http://project.test.gov.cn/api/test.asmx?wsdl";
//创建Service实例
Service service = new Service();
//通过Service实例创建Call实例
Call call = (Call)service.createCall();
//将WebService的服务路径加入到Call实例中,并为Call设置服务的位置
URL url = new URL(endpoint);
call.setTargetEndpointAddress(url);
//调用WebService方法
//QName方法有两个参数,1:命名空间 2:方法名
call.setOperationName(new QName("http://www.test.net/","AddInfo"));
//由于需要认证,故需要设置调用的用户名和密码。
call.getMessageContext().setUsername("aaa");// 设置用户名。
call.getMessageContext().setPassword("bbb");// 设置密码
//调用WebService传入参数
String res = (String)call.invoke(new Object[] {getXml()});
System.out.println(res);
}catch(Exception e){
e.printStackTrace();
}
}
[/code]