def _request(self, host, handler, request_body, verbose=0):
"""Send a HTTP request."""
h = self.make_connection(host)
self.verbose = verbose
if verbose:
h.set_debuglevel(1)
request_url = "%s://%s/" % (self.scheme, host)
cookie_request = urllib2.Request(request_url)
self.send_request(h, handler, request_body)
self.send_host(h, host)
self.send_cookies(h, cookie_request)
self.send_user_agent(h)
self.send_content(h, request_body)
errcode, errmsg, headers = h.getreply()
if errcode == 401 and USE_KERBEROS:
vc, challenge = self._kerberos_client_request(host, handler, errcode, errmsg, headers)
# retry the original request & add the Authorization header:
self.send_request(h, handler, request_body)
self.send_host(h, host)
h.putheader("Authorization", "Negotiate %s" % challenge)
self.send_cookies(h, cookie_request)
self.send_user_agent(h)
self.send_content(h, request_body)
errcode, errmsg, headers = h.getreply()
self._kerberos_verify_response(vc, host, handler, errcode, errmsg, headers)
elif errcode != 200:
raise xmlrpclib.ProtocolError(host + handler, errcode, errmsg, headers)
self._save_cookies(headers, cookie_request)
try:
sock = h._conn.sock
except AttributeError:
sock = None
return self._parse_response(h.getfile(), sock)
评论列表
文章目录