运行客户端时出现XML-RPC错误

时间:2009-08-27 09:42:34

标签: java xml-rpc

Exception in thread "Thread-4" java.lang.InstantiationError: org.apache.xmlrpc.XmlRpcRequest
    at org.apache.xmlrpc.XmlRpcRequestProcessor.decodeRequest(XmlRpcRequestProcessor.java:82)
    at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:143)
    at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139)
    at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:125)
    at org.apache.xmlrpc.WebServer$Connection.run(WebServer.java:761)
    at org.apache.xmlrpc.WebServer$Runner.run(WebServer.java:642)
    at java.lang.Thread.run(Unknown Source)

这是我在XML-RPC中的localhost上运行客户端代码时遇到的错误。我在JAVA中创建了服务器和客户端。我的服务器进程似乎运行正常。它正在等待客户端请求成功。

以下是我的客户代码。

package rpcpkg;

import java.net.URL;
import java.util.Vector;

import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class SimpleXmlrpc {

    public SimpleXmlrpc() {
    }

    public static void main(String[] args) {

        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();

        try{

          config.setServerURL(new URL("http://localhost:8089/workspace3/JAVARPC/RPCSRC/rpcserverpkg/"));

            XmlRpcClient client = new XmlRpcClient();
            client.setConfig(config);

            Vector params = new Vector();
            params.addElement(new Integer(17));
            params.addElement(new Integer(13));

            Object result = client.execute("sample.sum", params);

            int sum = ((Integer) result).intValue();
            System.out.println("The sum is: "+ sum);

        }
        catch(Exception e)
        {
            System.out.println("Exception: " + e.getMessage());
    }
    }
}

1 个答案:

答案 0 :(得分:1)

AS matt和Stu说,你可以检查你的XML-RPC服务器对另一个客户端的响应。

这是python中的一个例子

#!/usr/bin/python
import xmlrpclib
import sys

def main(argv):
    client = xmlrpclib.ServerProxy("http://localhost:8089/workspace3/JAVARPC/RPCSRC/rpcserverpkg/")
    xmlresponse = client.sample.sum(17,13)
    print xmlresponse

if __name__ == "__main__":
   main(sys.argv[1:])