带参数的方法调用

来源:互联网 发布:打开淘宝自动跳转 编辑:程序博客网 时间:2024/05/18 00:22

上面的HelloWorld的实例中,getMessage方法是没有参数的,这一节我们来加一个参数。

1)将HelloWorldService.java修改如下:

package cn.com.chengang.soap.hello;

public class HelloWorldService {

    public String getMessage() {

        return "Hello World!";

    }

    public String getMessage(String str) {

        return "Hello World! " + str;

    }

    public String getMessage(String str1, String str2) {

        return "Hello World! " + str1 + "&" + str2;

    }

}

2)将HelloWorldService.class复制到Tomcat的“Tomcat 5.0\common\classes\cn\com\chengang\soap\hello”目录下,覆盖原来的HelloWorldService.class

3)重启Tomcat服务。

4)修改HelloWorldClient程序如下(红字部份是新加的):

package cn.com.chengang.soap.hello;

import java.net.URL;

import java.util.Vector;

import org.apache.soap.Constants;

import org.apache.soap.Fault;

import org.apache.soap.rpc.Call;

import org.apache.soap.rpc.Parameter;

import org.apache.soap.rpc.Response;

public class HelloWorldClient {

    public static void main(String args[]) throws Exception {

        String endPoint = "http://localhost:8080/soap/servlet/rpcrouter";

        Call call = new Call();//创建一个RPC Call

        call.setTargetObjectURI("urn:HelloWorldService");//远程的服务名

        call.setMethodName("getMessage");//访问方法

        call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); //设置编码风格

        Vector params = new Vector();

        Parameter p1 = new Parameter("name", String.class, "陈刚", null);

        Parameter p2 = new Parameter("name2", String.class, "陈勇", null);

        params.addElement(p1);

        params.addElement(p2);

        call.setParams(params);

        URL url = new URL(endPoint); //SOAP服务的网址

        //开始发送RPC请求,并返回服务器端的应答

        Response resp = call.invoke(url, "");

        //检查应答报文中是否有错

        //有错就打印出错信息,没错就打印到正确的返回值HelloWorld

        if (resp.generatedFault()) {

            Fault fault = resp.getFault();

            System.out.println("The Following Error Occured: ");

            System.out.println(" Fault Code = " + fault.getFaultCode());

            System.out.println(" Fault String =" + fault.getFaultString());

        } else {

            Parameter result = resp.getReturnValue();

            System.out.println(result.getValue());

        }

    }

}

6)在Eclipse中运行HelloWorldClient

参考资料

http://blog.csdn.net/caiyi0903/archive/2004/01/20/18036.aspx

http://blog.csdn.net/caiyi0903/archive/2004/01/20/18036.aspx

http://blog.csdn.net/caiyi0903/archive/2004/01/20/18037.aspx

http://blog.csdn.net/madfool/archive/2002/08/17/11309.aspx