2016-03-09 35 views
0

我在Python3中有一个带有pysimplesoap的肥皂服务器。我不知道,因为我得到了下一个错误。参数必须是字节实例WSGI Python3

代码

from wsgiref.simple_server import make_server 
    application = WSGISOAPHandler(dispatcher) 
    wsgid = make_server('', 8008, application) 
    wsgid.serve_forever() 

错误

Traceback (most recent call last): 
    File "/usr/lib/python3.4/wsgiref/handlers.py", line 138, in run 
    self.finish_response() 
    File "/usr/lib/python3.4/wsgiref/handlers.py", line 180, in finish_response 
    self.write(data) 
    File "/usr/lib/python3.4/wsgiref/handlers.py", line 266, in write 
    "write() argument must be a bytes instance" 
AssertionError: write() argument must be a bytes instance 

回答

0
+++ pysimplesoap/server.py 

        e['name'] = k 
        if array: 
         e[:] = {'minOccurs': "0", 'maxOccurs': "unbounded"} 
-     if v in TYPE_MAP.keys(): 
-      t = 'xsd:%s' % TYPE_MAP[v] 
-     elif v is None: 
+ 
+     # check list and dict first to avoid 
+     # TypeError: unhashable type: 'list' or 
+     # TypeError: unhashable type: 'dict' 
+     if v is None: 
         t = 'xsd:anyType' 
        elif isinstance(v, list): 
         n = "ArrayOf%s%s" % (name, k) 
         n = "%s%s" % (name, k) 
         parse_element(n, v.items(), complex=True) 
         t = "tns:%s" % n 
+     elif v in TYPE_MAP.keys(): 
+      t = 'xsd:%s' % TYPE_MAP[v] 
        else: 
         raise TypeError("unknonw type v for marshalling" % str(v)) 
        e.add_attribute('type', t) 
+2

错误是什么以及是什么造成的解释? – Escher

0

在handlers.py线180

self.write(data.encode()),而不是自.write(data)

相关问题