在我的服务器上,我使用 Python的标准示例(使用额外的Hello World方法),在客户端,我使用C#中的XML-RPC.NET库. 但每次我运行我的客户端时,我都会得到一个例外,即找不到该方法.任何想法如何解
但每次我运行我的客户端时,我都会得到一个例外,即找不到该方法.任何想法如何解决.
谢谢!
Python:
from SimpleXMLRPCServer import SimpleXMLRPCServer from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler # Restrict to a particular path. class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) # Create server server = SimpleXMLRPCServer(("", 8000), requestHandler=RequestHandler) server.register_introspection_functions() # Register pow() function; this will use the value of # pow.__name__ as the name, which is just 'pow'. server.register_function(pow) # Register a function under a different name def adder_function(x,y): return x + y server.register_function(adder_function, 'add') def HelloWorld(): return "Hello Henrik" server.register_function(HelloWorld,'HelloWorld') # Register an instance; all the methods of the instance are # published as XML-RPC methods (in this case, just 'div'). class MyFuncs: def div(self, x, y): return x // y server.register_instance(MyFuncs()) # Run the server's main loop server.serve_forever()
C#
namespace XMLRPC_Test { [XmlRpcUrl("http://188.40.xxx.xxx:8000")] public interface HelloWorld : IXmlRpcProxy { [XmlRpcMethod] String HelloWorld(); } [XmlRpcUrl("http://188.40.xxx.xxx:8000")] public interface add : IXmlRpcProxy { [XmlRpcMethod] int add(int x, int y); } [XmlRpcUrl("http://188.40.xxx.xxx:8000")] public interface listMethods : IXmlRpcProxy { [XmlRpcMethod("system.listMethods")] String listMethods(); } class Program { static void Main(string[] args) { listMethods proxy = XmlRpcProxyGen.Create<listMethods>(); Console.WriteLine(proxy.listMethods()); Console.ReadLine(); } } }如果您将声明更改为此可行吗?
[XmlRpcUrl("http://188.40.xxx.xxx:8000/RPC2")]
从Python docs:
SimpleXMLRPCRequestHandler.rpc_paths
An attribute value that must be a tuple listing valid path portions of the URL for receiving XML-RPC requests. Requests posted to other paths will result in a 404 “no such page” HTTP error. If this tuple is empty, all paths will be considered valid. The default value is (‘/’, ‘/RPC2’).