0

我正在开发一个正在创建服务器和客户端的应用程序;ServerAPI 使用 SimpleXMLRPCServer,ClientAPI 使用 xmlrpclib。客户端启动:

class w_Client:
        def __init__(self, ServerIP, ServerPort, ClientIP):
                self.conn = xmlrpclib.ServerProxy("http://" + ServerIP + ":" + str(ServerPort))
                self.ClientIP = ClientIP

在应用程序中按下按钮后,将创建一个 xml 规范文件并通过

        def Create(self, XMLstring):
            return self.conn.Create(XMLstring, self.ClientIP)

我已经检查以确保 XMLstring 是有效的 XML;但是,当我按下按钮时,出现以下错误:

Traceback (most recent call last):

  File "/home/app/UI/MainWindow.py", line 461, in compile
    xmlFile = compiler.compile()
  File "/home/app/Core/Compiler.py", line 75, in compile
    self.compile_top()
  File "/home/app/Core/Compiler.py", line 354, in compile_top
    status = mainWidgets["w_client"].Create(xmlString)
  File "/home/app/Wireless/ClientAPI.py", line 12, in Create
    return self.conn.Create(XMLstring, self.ClientIP)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1591, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:'NoneType' object has no attribute '__getitem__'">

我还确保正确传递了 ClientIP。否则,我不完全确定发生了什么或如何修复它。

4

1 回答 1

1
<type 'exceptions.TypeError'>:'NoneType' object has no attribute '__getitem__'

此异常可能是由您调用的 xmlrpc 方法(即服务器端)生成的。

我建议您添加verbose=True到服务器代理的实例化中:

xmlrpclib.ServerProxy("http://" + ServerIP + ":" + str(ServerPort),verbose=True)

这将允许您查看您正在发送和接收的内容。

您调用的方法似乎需要一个dict

于 2015-09-22T20:17:26.693 回答