调用webservice的问题

[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]