Python 2.6上的HTTP实例没有属性getresponse Error
我试图使用python进行一些jsonrpc调用。但是,由于api调用需要cookie,因此我创建了自己的传输类,该类将由jsonrpclib使用。这在最新的2.7 python中完全可以正常工作。然而,当我尝试在Python2.6.6上运行它时,它会抱怨HTTP实例没有getresponse属性 代码 错误发生在resp=h.getresponse的行 有什么想法吗??Python 2.6上的HTTP实例没有属性getresponse Error,python,http,Python,Http,我试图使用python进行一些jsonrpc调用。但是,由于api调用需要cookie,因此我创建了自己的传输类,该类将由jsonrpclib使用。这在最新的2.7 python中完全可以正常工作。然而,当我尝试在Python2.6.6上运行它时,它会抱怨HTTP实例没有getresponse属性 代码 错误发生在resp=h.getresponse的行 有什么想法吗?? 顺便问一下,python是一种在不同版本上运行时很容易弄乱代码的语言吗?这种有线行为在我身上出现过多次。什么是h型?我没有看
顺便问一下,python是一种在不同版本上运行时很容易弄乱代码的语言吗?这种有线行为在我身上出现过多次。什么是h型?我没有看到self.make\u连接的实现。您确定Python2.6中存在该方法吗?该方法可能是后来添加的—Python2.6非常旧。它应该在XMLTransport中使用make_连接方法,并且两个Python版本使用相同版本的xmlrpclib模块。所以我想他们应该有相同的实现?但是我在Python2.7中检查了h的类型,它似乎是一个httplib.HTTPConnection,但在2.6中它是一个httplib.HTTP@user3354832@BurhanKhalid问题的根源是什么?xmlrpclib在这两台计算机中有相同的版本,但为什么它们的调用堆栈不同呢?我如何解决这个问题?对于运行Python2.6的计算机,我不允许对其进行任何更新。
class TransportMixIn(object):
""" Just extends the XMLRPC transport where necessary. """
user_agent = jsonrpclib.config.user_agent
# for Python 2.7 support
_connection = None
def send_content(self, connection, request_body):
connection.putheader("Content-Type", "application/json-rpc")
connection.putheader("Content-Length", str(len(request_body)))
if cookie != None :
connection.putheader("Cookie",cookie)
connection.endheaders()
if request_body:
connection.send(request_body)
def getparser(self):
target = JSONTarget()
return JSONParser(target), target
def request(self, host, handler, request_body, verbose=False):
# issue XML-RPC request
self.verbose = verbose
try:
h=self.make_connection(host)
if verbose:
h.set_debuglevel(1)
self.send_request(h,handler,request_body)
self.send_host(h,host)
self.send_user_agent(h)
self.send_content(h,request_body)
**resp = h.getresponse()**
if resp.status == 200:
self.verbose = verbose
global cookie
cookie = resp.getheader('set-cookie')
return self.parse_response(resp)
except xmlrpclib.Fault:
raise
except Exception:
#All unexpected errors leave connection in
# a strange state, so we clear it.
self.close()
raise
#We got an error response.
#Discard any response data and raise exception
if resp.getheader("content-length", ""):
resp.read()
raise xmlrpclib.ProtocolError(
host + handler,
resp.status, resp.reason,
dict(resp.getheaders())
)
class Transport(TransportMixIn, XMLTransport):
pass
class SafeTransport(TransportMixIn, XMLSafeTransport):
pass