2011-08-19 119 views
1

我在網上搜索,看到以下問題:XML-RPC C# and Python RPC ServerXMLRPC C#客戶端Python客戶端 - 方法不存在

我想了一會兒做同樣的,但我失敗了。我得到的異常「方法‘的HelloWorld’,不支持......」

[XmlRpcUrl("http://192.168.0.xxx:8000/RPC2")] 
public interface HelloWorld : IXmlRpcProxy 
{ 
    [XmlRpcMethod] 
    String HelloWorld(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     HelloWorld proxy = CookComputing.XmlRpc.XmlRpcProxyGen.Create<HelloWorld>(); 
     textBox1.Text = proxy.HelloWorld(); 
    } 
    catch (Exception ex) 
    { 
     HandleException(ex); 
    } 
} 

而且我的Python服務器是:

class LGERequestHandler(SimpleXMLRPCRequestHandler): 
    rpc_paths = ('/RPC2',) 

def HelloWorld(): 
    return "This is server..." 

server = SimpleXMLRPCServer(("192.168.0.xxx", 8000), 
         requestHandler=LGERequestHandler) 

server.register_introspection_functions() 
server.register_function("HelloWorld", HelloWorld) 
server.register_instance(self) 

# Run the server's main loop 
server.serve_forever() 

服務器啓動並運行,但我仍然得到一個異常。

+0

無效蟒蛇,在dedents不匹配縮進。請編輯您的答案以反映您遇到問題的實際代碼。 (提示:將代碼粘貼到編輯框中,選擇整個代碼塊,然後單擊「{}」按鈕以使縮進顯示正確) – SingleNegationElimination

+0

看起來C#客戶端並未將該方法視爲「HelloWorld」。也許如果你註冊爲「HelloWorld.HelloWorld」,或者類似的東西。 – wberry

回答

1

我發現這個問題:

  1. 語法問題server.register_function("HelloWorld", HelloWorld)應該是server.register_function(HelloWorld, "HelloWorld")

  2. 這種變化也沒有工作,所以我改變了函數名形式helloWorldhello,它的工作(!)