【问题标题】:Fault: No Attribute in xmlrpclib.py错误:xmlrpclib.py 中没有属性
【发布时间】:2015-09-22 18:25:06
【问题描述】:

我正在开发一个正在创建服务器和客户端的应用程序; 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。否则,我不完全确定发生了什么或如何修复它。

【问题讨论】:

    标签: python xml-rpc xmlrpclib xmlrpcclient simplexmlrpcserver


    【解决方案1】:
    <type 'exceptions.TypeError'>:'NoneType' object has no attribute '__getitem__'
    

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

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

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

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

    您调用的方法似乎需要 dict

    【讨论】:

    • 我怎么知道它需要一个字典,特别是哪种方法?我不太确定。
    • 我猜。 __getitem__ 是检索键值的方法,但 None 没有此方法。 IE。一些代码在期待 dict 时收到了 None
    • 你的意思是Create方法吗?
    猜你喜欢
    • 2021-03-10
    • 2020-12-11
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2016-04-07
    • 2018-12-09
    相关资源
    最近更新 更多