前些天无意中发现了XML-RPC(不过笑我才发现啊
     ),总想找个机会摆弄摆弄。毕业论文基本上弄完了,所以决定今天把它弄明白。
    ),总想找个机会摆弄摆弄。毕业论文基本上弄完了,所以决定今天把它弄明白。
    
    XML-RPC的最大用处,我首先想到的是浏览器在不刷新页面的情况下与服务器通信,请求数据。下面我就说一下我用XML-RPC是怎么实现的。
  
    
      第一步:选择XML-RPC实现。
      
    
    XML-RPC的一个很大优势就是 它是一个标准,并且各种开发环境下都有实现(酷),这是它能够轻松跨平台的原因。
    
    javascript有3个实现。我看了一下最好的应该是jsolait(JavaScript o Lait)的实现了。因为他不仅仅是一个xml-rpc的实现,除此之外还有很多javascript库,详细内容请看这里(
    
      http://jsolait.net/
    
    )。
    
    java的实现就更多了,我当然毫不犹豫地选择apache的。详细内容看这里(
    
      http://ws.apache.org/xmlrpc/
    
    )
  
    第二步:建立服务。
    
    用java建立xml-rpc有两种方式,一种是单独开个端口,一种是用servlet。我们客户端是用javascript,那么服务端用servlet是再好不过的了。
    
    如何使用apache的xml-rpc,请详细看apache的资料。(大哥你不会连servlet也不会建吧,那你还是不要往下看了)。
    
    代码如下:
    
    这是一个sayHello的服务类:
    
  
 public
      
      
         
      
      
        class
      
      
         HelloService 
      
      
      
        
          {
      
      
        public
      
      
         
      
      
        class
      
      
         HelloService 
      
      
      
        
          {
           
           
           public
        
        
           String sayHello(String name)
        
        
        
          
            {
          
           
        
        
          public
        
        
           String sayHello(String name)
        
        
        
          
            {
             return
          
          
             
          
          
            "
          
          
            Hello: 
          
          
            "
          
          
            +
          
          
            name
          
          
            +
          
          
            "
          
          
             !
          
          
            "
          
          
            ;
              
          
          
            return
          
          
             
          
          
            "
          
          
            Hello: 
          
          
            "
          
          
            +
          
          
            name
          
          
            +
          
          
            "
          
          
             !
          
          
            "
          
          
            ;
             }
             }
          
        
        
           
           }
          }
        
      
      
         
         
      
    
    
    下面是一个Math服务类:
    
  
 public
      
      
         
      
      
        class
      
      
         MathService 
      
      
      
        
          {
      
      
        public
      
      
         
      
      
        class
      
      
         MathService 
      
      
      
        
          {
           public
        
        
           
        
        
          double
        
        
           add(Vector v)
        
        
        
          
            {
          
           
        
        
          public
        
        
           
        
        
          double
        
        
           add(Vector v)
        
        
        
          
            {
             double
          
          
             a 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            0
          
          
            ));
              
          
          
            double
          
          
             a 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            0
          
          
            ));
             double
          
          
             b 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            1
          
          
            ));
              
          
          
            double
          
          
             b 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            1
          
          
            ));
             return
          
          
             a
          
          
            +
          
          
            b;
              
          
          
            return
          
          
             a
          
          
            +
          
          
            b;
             }
             }
          
        
        
           
           
           public
        
        
           
        
        
          double
        
        
           mult(Vector v)
        
        
        
          
            {
          
           
        
        
          public
        
        
           
        
        
          double
        
        
           mult(Vector v)
        
        
        
          
            {
             double
          
          
             a 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            0
          
          
            ));
              
          
          
            double
          
          
             a 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            0
          
          
            ));
             double
          
          
             b 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            1
          
          
            ));
              
          
          
            double
          
          
             b 
          
          
            =
          
          
             Double.parseDouble((String)v.
          
          
            get
          
          
            (
          
          
            1
          
          
            ));
             return
          
          
             a
          
          
            *
          
          
            b;
              
          
          
            return
          
          
             a
          
          
            *
          
          
            b;
             }
             }
          
        
        
           }
          }
        
      
    
    
    接着是Servlet啦,作为RPC Server用的,这段代码比较经典,很多资料上都有。
    
  
 public
      
      
         
      
      
        class
      
      
         RpcServer extends HttpServlet 
      
      
      
        
          {
      
      
        public
      
      
         
      
      
        class
      
      
         RpcServer extends HttpServlet 
      
      
      
        
          {
           protected
        
        
           
        
        
          void
        
        
           doPost(HttpServletRequest request,
           
        
        
          protected
        
        
           
        
        
          void
        
        
           doPost(HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException 
        
        
        
          
            {
          
             HttpServletResponse response) throws ServletException, IOException 
        
        
        
          
            {
             XmlRpcServer xmlrpc 
          
          
            =
          
          
             
          
          
            new
          
          
             XmlRpcServer();
              XmlRpcServer xmlrpc 
          
          
            =
          
          
             
          
          
            new
          
          
             XmlRpcServer();
             xmlrpc.addHandler(
          
          
            "
          
          
            HelloService
          
          
            "
          
          
            , 
          
          
            new
          
          
             HelloService());
              xmlrpc.addHandler(
          
          
            "
          
          
            HelloService
          
          
            "
          
          
            , 
          
          
            new
          
          
             HelloService());
             xmlrpc.addHandler(
          
          
            "
          
          
            MathService
          
          
            "
          
          
            ,
          
          
            new
          
          
             MathService());
              xmlrpc.addHandler(
          
          
            "
          
          
            MathService
          
          
            "
          
          
            ,
          
          
            new
          
          
             MathService());
             byte
          
          
            [] result 
          
          
            =
          
          
             xmlrpc.execute(request.getInputStream());
              
          
          
            byte
          
          
            [] result 
          
          
            =
          
          
             xmlrpc.execute(request.getInputStream());
             response.setContentType(
          
          
            "
          
          
            text/xml
          
          
            "
          
          
            );
              response.setContentType(
          
          
            "
          
          
            text/xml
          
          
            "
          
          
            );
             response.setContentLength(result.length);
              response.setContentLength(result.length);
             OutputStream 
          
          
            out
          
          
             
          
          
            =
          
          
             response.getOutputStream();
              OutputStream 
          
          
            out
          
          
             
          
          
            =
          
          
             response.getOutputStream();
             out
          
          
            .write(result);
              
          
          
            out
          
          
            .write(result);
             out
          
          
            .flush();
              
          
          
            out
          
          
            .flush();
             }
             }
          
        
        
           }
          }
        
      
    
    主要是这三句:
    
    XmlRpcServer xmlrpc = new XmlRpcServer();
    
    xmlrpc.addHandler("HelloService", new HelloService());
    
    xmlrpc.addHandler("MathService",new MathService());
    
    一定要记牢Handler的名字,就是第一个参数,因为客户端就靠他来表示要调用的方法呢。
  
    行了现在可以在web.xml中写入配置了:
    
  
 <
      
      
        servlet
      
      
        >
      
         
      
      
        <
      
      
        servlet
      
      
        >
      
      
         <
      
      
        servlet-name
      
      
        >
      
      
        RpcServer
      
      
        </
      
      
        servlet-name
      
      
        >
          
      
      
        <
      
      
        servlet-name
      
      
        >
      
      
        RpcServer
      
      
        </
      
      
        servlet-name
      
      
        >
      
      
         <
      
      
        servlet-class
      
      
        >
      
      
        org.mstar.rpc.RpcServer
      
      
        </
      
      
        servlet-class
      
      
        >
          
      
      
        <
      
      
        servlet-class
      
      
        >
      
      
        org.mstar.rpc.RpcServer
      
      
        </
      
      
        servlet-class
      
      
        >
      
      
         </
      
      
        servlet
      
      
        >
         
      
      
        </
      
      
        servlet
      
      
        >
      
      
         <
      
      
        servlet-mapping
      
      
        >
         
      
      
        <
      
      
        servlet-mapping
      
      
        >
      
      
         <
      
      
        servlet-name
      
      
        >
      
      
        RpcServer
      
      
        </
      
      
        servlet-name
      
      
        >
          
      
      
        <
      
      
        servlet-name
      
      
        >
      
      
        RpcServer
      
      
        </
      
      
        servlet-name
      
      
        >
      
      
         <
      
      
        url-pattern
      
      
        >
      
      
        /RpcServer
      
      
        </
      
      
        url-pattern
      
      
        >
          
      
      
        <
      
      
        url-pattern
      
      
        >
      
      
        /RpcServer
      
      
        </
      
      
        url-pattern
      
      
        >
      
      
         </
      
      
        servlet-mapping
      
      
        >
         
      
      
        </
      
      
        servlet-mapping
      
      
        >
      
    
    
    至此,服务端的工作已经完成,启动应用服务器就行了。
  
    下面是javacript的实现,这也是难点(其实不难理解,只是没有中文材料)。
    
    把jsolait的库下来以后解压缩,得到一些js文件,具体我就不说了。
  
    建立一个html文件:
    
  
 <
      
      
        html
      
      
        >
      
        <
      
      
        html
      
      
        >
      
      
         <
      
      
        head
      
      
        >
      
      
        <
      
      
        head
      
      
        >
      
      
         <
      
      
        title
      
      
        >
      
      
        XML-RPC
      
      
        </
      
      
        title
      
      
        >
      
      
        <
      
      
        title
      
      
        >
      
      
        XML-RPC
      
      
        </
      
      
        title
      
      
        >
      
      
         <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/init.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/init.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
         <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/urllib.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/urllib.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
         <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/xml.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/xml.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
         <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/xmlrpc.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/lib/xmlrpc.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
         <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/hello.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
         src
      
      
        ="./js/hello.js"
      
      
        ></
      
      
        script
      
      
        >
      
      
         </
      
      
        head
      
      
        >
      
      
        </
      
      
        head
      
      
        >
      
      
         a:
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="a"
      
      
         
      
      
        /><
      
      
        br
      
      
        >
        a:
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="a"
      
      
         
      
      
        /><
      
      
        br
      
      
        >
      
      
         b:
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="b"
      
      
         
      
      
        /><
      
      
        br
      
      
        >
        b:
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="b"
      
      
         
      
      
        /><
      
      
        br
      
      
        >
      
      
         <
      
      
        input 
      
      
        type
      
      
        ="button"
      
      
         id
      
      
        ="do1"
      
      
         value
      
      
        ="a+b"
      
      
         onclick
      
      
        ="add()"
      
      
        />
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="button"
      
      
         id
      
      
        ="do1"
      
      
         value
      
      
        ="a+b"
      
      
         onclick
      
      
        ="add()"
      
      
        />
      
      
         <
      
      
        input 
      
      
        type
      
      
        ="button"
      
      
         id
      
      
        ="do2"
      
      
         value
      
      
        ="say"
      
      
         onclick
      
      
        ="hello()"
      
      
        />
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="button"
      
      
         id
      
      
        ="do2"
      
      
         value
      
      
        ="say"
      
      
         onclick
      
      
        ="hello()"
      
      
        />
      
      
         <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="result"
      
      
         
      
      
        />
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         id
      
      
        ="result"
      
      
         
      
      
        />
      
      
         </
      
      
        html
      
      
        >
      
      
        </
      
      
        html
      
      
        >
      
    
    
    注意到前面那一堆javascript的引用吗?就这么写吧。可别把hello.js当成solait的东西啦(看名字也知道啦),你是找不到的。这是我们自己写的:
    
    hello.js
    
  
 hello 
      
      
        =
      
      
         
      
      
        function
      
      
        (){
      
        hello 
      
      
        =
      
      
         
      
      
        function
      
      
        (){
         var
      
      
         xmlrpc
      
      
        =
      
      
        null
      
      
        ;
         
      
      
        var
      
      
         xmlrpc
      
      
        =
      
      
        null
      
      
        ;
         try
      
      
        {
         
      
      
        try
      
      
        {
         var
      
      
         xmlrpc 
      
      
        =
      
      
         importModule(
      
      
        "
      
      
        xmlrpc
      
      
        "
      
      
        );
             
      
      
        var
      
      
         xmlrpc 
      
      
        =
      
      
         importModule(
      
      
        "
      
      
        xmlrpc
      
      
        "
      
      
        );
         }
      
      
        catch
      
      
        (e){
         }
      
      
        catch
      
      
        (e){
         reportException(e);
             reportException(e);
         throw
      
      
         
      
      
        "
      
      
        importing of xmlrpc module failed.
      
      
        "
      
      
        ;
             
      
      
        throw
      
      
         
      
      
        "
      
      
        importing of xmlrpc module failed.
      
      
        "
      
      
        ;
         }
         }
         var
      
      
         addr 
      
      
        =
      
      
         
      
      
        "
      
      
        http://localhost:8080/Rpc/RpcServer
      
      
        "
      
      
        ;
         
      
      
        var
      
      
         addr 
      
      
        =
      
      
         
      
      
        "
      
      
        http://localhost:8080/Rpc/RpcServer
      
      
        "
      
      
        ;
         var
      
      
         methods 
      
      
        =
      
      
         [
      
      
        "
      
      
        HelloService.sayHello
      
      
        "
      
      
        ];
         
      
      
        var
      
      
         methods 
      
      
        =
      
      
         [
      
      
        "
      
      
        HelloService.sayHello
      
      
        "
      
      
        ];
         var
      
      
         rslt;
         
      
      
        var
      
      
         rslt;
         
         
         try
      
      
        {
         
      
      
        try
      
      
        {
         var
      
      
         service 
      
      
        =
      
      
         
      
      
        new
      
      
         xmlrpc.ServiceProxy(addr, methods);
                
      
      
        var
      
      
         service 
      
      
        =
      
      
         
      
      
        new
      
      
         xmlrpc.ServiceProxy(addr, methods);
         rslt 
      
      
        =
      
      
         service.HelloService.sayHello(
      
      
        "
      
      
        MTY
      
      
        "
      
      
        );
                rslt 
      
      
        =
      
      
         service.HelloService.sayHello(
      
      
        "
      
      
        MTY
      
      
        "
      
      
        );
         }
      
      
        catch
      
      
        (e){
            }
      
      
        catch
      
      
        (e){
         var
      
      
         em;
                
      
      
        var
      
      
         em;
         if
      
      
        (e.toTraceString){
                
      
      
        if
      
      
        (e.toTraceString){
         em 
      
      
        =
      
      
         e.toTraceString();
                    em 
      
      
        =
      
      
         e.toTraceString();
         }
      
      
        else
      
      
        {
                }
      
      
        else
      
      
        {
         em 
      
      
        =
      
      
         e.message;
                    em 
      
      
        =
      
      
         e.message;
         }
                }
         rslt 
      
      
        =
      
      
         
      
      
        "
      
      
        Error trace: \n\n
      
      
        "
      
      
         
      
      
        +
      
      
         em;
                rslt 
      
      
        =
      
      
         
      
      
        "
      
      
        Error trace: \n\n
      
      
        "
      
      
         
      
      
        +
      
      
         em;
         }
            }
         document.getElementById(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).value
      
      
        =
      
      
        rslt;
         document.getElementById(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).value
      
      
        =
      
      
        rslt;
         }
        }
         add 
      
      
        =
      
      
         
      
      
        function
      
      
        (){
        add 
      
      
        =
      
      
         
      
      
        function
      
      
        (){
         var
      
      
         xmlrpc
      
      
        =
      
      
        null
      
      
        ;
         
      
      
        var
      
      
         xmlrpc
      
      
        =
      
      
        null
      
      
        ;
         var
      
      
         a 
      
      
        =
      
      
         document.getElementById(
      
      
        "
      
      
        a
      
      
        "
      
      
        ).value;
         
      
      
        var
      
      
         a 
      
      
        =
      
      
         document.getElementById(
      
      
        "
      
      
        a
      
      
        "
      
      
        ).value;
         var
      
      
         b 
      
      
        =
      
      
         document.getElementById(
      
      
        "
      
      
        b
      
      
        "
      
      
        ).value;
         
      
      
        var
      
      
         b 
      
      
        =
      
      
         document.getElementById(
      
      
        "
      
      
        b
      
      
        "
      
      
        ).value;
         var
      
      
         params 
      
      
        =
      
      
         
      
      
        new
      
      
         Array();
         
      
      
        var
      
      
         params 
      
      
        =
      
      
         
      
      
        new
      
      
         Array();
         params[
      
      
        0
      
      
        ] 
      
      
        =
      
      
         a;
         params[
      
      
        0
      
      
        ] 
      
      
        =
      
      
         a;
         params[
      
      
        1
      
      
        ] 
      
      
        =
      
      
         b;
         params[
      
      
        1
      
      
        ] 
      
      
        =
      
      
         b;
         try
      
      
        {
         
      
      
        try
      
      
        {
         var
      
      
         xmlrpc 
      
      
        =
      
      
         importModule(
      
      
        "
      
      
        xmlrpc
      
      
        "
      
      
        );
             
      
      
        var
      
      
         xmlrpc 
      
      
        =
      
      
         importModule(
      
      
        "
      
      
        xmlrpc
      
      
        "
      
      
        );
         }
      
      
        catch
      
      
        (e){
         }
      
      
        catch
      
      
        (e){
         reportException(e);
             reportException(e);
         throw
      
      
         
      
      
        "
      
      
        importing of xmlrpc module failed.
      
      
        "
      
      
        ;
             
      
      
        throw
      
      
         
      
      
        "
      
      
        importing of xmlrpc module failed.
      
      
        "
      
      
        ;
         }
         }
         var
      
      
         addr 
      
      
        =
      
      
         
      
      
        "
      
      
        http://localhost:8080/Rpc/RpcServer
      
      
        "
      
      
        ;
         
      
      
        var
      
      
         addr 
      
      
        =
      
      
         
      
      
        "
      
      
        http://localhost:8080/Rpc/RpcServer
      
      
        "
      
      
        ;
         var
      
      
         methods 
      
      
        =
      
      
         [
      
      
        "
      
      
        HelloService.sayHello
      
      
        "
      
      
        ,
      
      
        "
      
      
        MathService.add
      
      
        "
      
      
        ];
         
      
      
        var
      
      
         methods 
      
      
        =
      
      
         [
      
      
        "
      
      
        HelloService.sayHello
      
      
        "
      
      
        ,
      
      
        "
      
      
        MathService.add
      
      
        "
      
      
        ];
         var
      
      
         rslt;
         
      
      
        var
      
      
         rslt;
         
         
         try
      
      
        {
         
      
      
        try
      
      
        {
         var
      
      
         service 
      
      
        =
      
      
         
      
      
        new
      
      
         xmlrpc.ServiceProxy(addr, methods);
                
      
      
        var
      
      
         service 
      
      
        =
      
      
         
      
      
        new
      
      
         xmlrpc.ServiceProxy(addr, methods);
         rslt 
      
      
        =
      
      
         service.MathService.add(params);
                rslt 
      
      
        =
      
      
         service.MathService.add(params);
         }
      
      
        catch
      
      
        (e){
            }
      
      
        catch
      
      
        (e){
         var
      
      
         em;
                
      
      
        var
      
      
         em;
         if
      
      
        (e.toTraceString){
                
      
      
        if
      
      
        (e.toTraceString){
         em 
      
      
        =
      
      
         e.toTraceString();
                    em 
      
      
        =
      
      
         e.toTraceString();
         }
      
      
        else
      
      
        {
                }
      
      
        else
      
      
        {
         em 
      
      
        =
      
      
         e.message;
                    em 
      
      
        =
      
      
         e.message;
         }
                }
         rslt 
      
      
        =
      
      
         
      
      
        "
      
      
        Error trace: \n\n
      
      
        "
      
      
         
      
      
        +
      
      
         em;
                rslt 
      
      
        =
      
      
         
      
      
        "
      
      
        Error trace: \n\n
      
      
        "
      
      
         
      
      
        +
      
      
         em;
         }
            }
         document.getElementById(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).value
      
      
        =
      
      
        rslt;
         document.getElementById(
      
      
        "
      
      
        result
      
      
        "
      
      
        ).value
      
      
        =
      
      
        rslt;
         }
        }
         
         
      
    
    
    这个js文件中有两个函数,一个负责从sayhello,一个负责加法运算。
    
    这里需要一些解释的地方:
    
    1、
    
     var xmlrpc=null;
    
     try{
    
         var xmlrpc = importModule("xmlrpc");
    
     }catch(e){
    
         reportException(e);
    
         throw "importing of xmlrpc module failed.";
    
     }
    
    这里是把xmlrpc模块引进来,你也就这么写吧,我也不知道为什么。
    
    2、
    
     var addr = "
    
      http://localhost:8080/Rpc/RpcServer
    
    ";
    
     var methods = ["HelloService.sayHello"];
    
    定义服务地址和要用的方法名。规则大概你也能看懂:Handler名.方法名。这里的Handler名就是你在xmlrpcServer中注册名,就是我上面让你记住的那个。方法名就是那个类自己的方法名。注意,methods是一个数组,所以可以写多个方法,如第二个例子。var methods = ["HelloService.sayHello","MathService.add"];
    
    3、
    
        try{
    
            var service = new xmlrpc.ServiceProxy(addr, methods);
    
            rslt = service.HelloService.sayHello("MTY");
    
        }catch(e){
    
            var em;
    
            if(e.toTraceString){
    
                em = e.toTraceString();
    
            }else{
    
                em = e.message;
    
            }
    
            rslt = "Error trace: \n\n" + em;
    
        }
    
    通过new xmlrpc.ServiceProxy(addr, methods);得到服务代理。
    
    然后调用服务的方法就行了,方法就是代理.Handler名.方法名(参数)。好像参数只能有一个,在第二个例子中我开始有两个参数a,b会发生错误。怎么办?没办法,在javascript用Array传参数,在java用Vector接参数(为什么用Vector,因为xml-rpc规范中的Array,apache使用Vector实现的,为什么javascript不用Vector,因为js没有Vector,且js的的Array是可变长的)。当然这就需要很多java端类型转换工作,js是弱类型的就不用转换了。
  
     
    
     
  


 
       
       
           
         
					 
					