我们从Python开源项目中,提取了以下22个代码示例,用于说明如何使用six.moves.http_client.HTTPConnection()。
def _connect_request(self, vdi_ref): # request connection to xapi url service for VDI export try: # create task for VDI export label = 'VDI_EXPORT_for_' + self.instance['name'] desc = 'Exporting VDI for instance: %s' % self.instance['name'] self.task_ref = self.session.task.create(label, desc) LOG.debug("task_ref is %s" % self.task_ref) # connect to XS xs_url = urlparse.urlparse(self.host_url) if xs_url.scheme == 'http': conn = httplib.HTTPConnection(xs_url.netloc) LOG.debug("using http") elif xs_url.scheme == 'https': conn = httplib.HTTPSConnection(xs_url.netloc) LOG.debug("using https") vdi_export_path = utils.get_vdi_export_path( self.session, self.task_ref, vdi_ref) conn.request('GET', vdi_export_path) conn_resp = conn.getresponse() except Exception: LOG.debug('request connect for vdi export failed') raise return conn_resp
def connect(self, method, content_length, cookie): try: if self._scheme == 'http': conn = httplib.HTTPConnection(self._server) elif self._scheme == 'https': # TODO(browne): This needs to be changed to use python requests conn = httplib.HTTPSConnection(self._server) # nosec else: excep_msg = _("Invalid scheme: %s.") % self._scheme LOG.error(excep_msg) raise ValueError(excep_msg) conn.putrequest(method, '/folder/%s?%s' % (self.path, self._query)) conn.putheader('User-Agent', constants.USER_AGENT) conn.putheader('Content-Length', content_length) conn.putheader('Cookie', cookie) conn.endheaders() LOG.debug("Created HTTP connection to transfer the file with " "URL = %s.", str(self)) return conn except (httplib.InvalidURL, httplib.CannotSendRequest, httplib.CannotSendHeader) as excep: excep_msg = _("Error occurred while creating HTTP connection " "to write to file with URL = %s.") % str(self) LOG.exception(excep_msg) raise exceptions.VimConnectionException(excep_msg, excep)
def OpenPathWithStub(path, stub): """ Open the specified path using HTTP, using the host/port/protocol associated with the specified stub. If the stub has a session cookie, it is included with the HTTP request. Returns the response as a file-like object. """ from six.moves import http_client if not hasattr(stub, 'scheme'): raise vmodl.fault.NotSupported() elif stub.scheme == http_client.HTTPConnection: protocol = 'http' elif stub.scheme == http_client.HTTPSConnection: protocol = 'https' else: raise vmodl.fault.NotSupported() hostPort = stub.host url = '%s://%s%s' % (protocol, hostPort, path) headers = {} if stub.cookie: headers["Cookie"] = stub.cookie return requests.get(url, headers=headers, verify=False)
def connect(self): TimeoutHTTPProxyConnection.connect(self) host = "%s:%s" % (self.real_host, self.real_port) TimeoutHTTPConnection.putrequest(self, "CONNECT", host) self._add_auth_proxy_header() TimeoutHTTPConnection.endheaders(self) class MyHTTPSResponse(httplib.HTTPResponse): def begin(self): httplib.HTTPResponse.begin(self) self.will_close = 0 response_class = self.response_class self.response_class = MyHTTPSResponse response = httplib.HTTPConnection.getresponse(self) self.response_class = response_class response.close() if response.status != 200: self.close() raise socket.error(1001, response.status, response.msg) self.sock = ssl.wrap_socket(self.sock, keyfile=self.key_file, certfile=self.cert_file)
def check_for_delay(self, verb, path, username=None): body = jsonutils.dumps({"verb": verb, "path": path}) headers = {"Content-Type": "application/json"} conn = httplib.HTTPConnection(self.limiter_address) if username: conn.request("POST", "/%s" % (username), body, headers) else: conn.request("POST", "/", body, headers) resp = conn.getresponse() if 200 >= resp.status < 300: return None, None return resp.getheader("X-Wait-Seconds"), resp.read() or None # Note: This method gets called before the class is instantiated, # so this must be either a static method or a class method. It is # used to develop a list of limits to feed to the constructor. # This implementation returns an empty list, since all limit # decisions are made by a remote server.
def __init__(self, path, timeout): httplib.HTTPConnection.__init__( self, "localhost", timeout=timeout) self.__unix_socket_path = path self.timeout = timeout
def _create_connection(scheme, netloc): if scheme == 'https': conn = httplib.HTTPSConnection(netloc) else: conn = httplib.HTTPConnection(netloc) conn.connect() return conn
def http_connection(self): conn = None xs_url = urllib.parse.urlparse(self.url) LOG.debug("Creating http(s) connection to %s", self.url) if xs_url.scheme == 'http': conn = http_client.HTTPConnection(xs_url.netloc) elif xs_url.scheme == 'https': conn = http_client.HTTPSConnection(xs_url.netloc) conn.connect() try: yield conn finally: conn.close()
def main(unused_argv=None): target = FLAGS.target logdir = FLAGS.logdir if not target or not logdir: PrintAndLog('Both --target and --logdir are required.', tf.logging.ERROR) return -1 if os.path.exists(target): if FLAGS.overwrite: if os.path.isdir(target): shutil.rmtree(target) else: os.remove(target) else: PrintAndLog('Refusing to overwrite target %s without --overwrite' % target, tf.logging.ERROR) return -2 path_to_run = server.ParseEventFilesSpec(FLAGS.logdir) PrintAndLog('About to load Multiplexer. This may take some time.') multiplexer = event_multiplexer.EventMultiplexer( size_guidance=server.TENSORBOARD_SIZE_GUIDANCE, purge_orphaned_data=FLAGS.purge_orphaned_data) server.ReloadMultiplexer(multiplexer, path_to_run) PrintAndLog('Multiplexer load finished. Starting TensorBoard server.') s = server.BuildServer(multiplexer, 'localhost', 0, logdir) server_thread = threading.Thread(target=s.serve_forever) server_thread.daemon = True server_thread.start() connection = http_client.HTTPConnection('localhost', s.server_address[1]) PrintAndLog('Server setup! Downloading data from the server.') x = TensorBoardStaticSerializer(connection, target) x.Run() PrintAndLog('Done downloading data.') connection.close() s.shutdown() s.server_close()
def __GetElementTree(protocol, server, port, path, sslContext): """ Private method that returns a root from ElementTree for a remote XML document. @param protocol: What protocol to use for the connection (e.g. https or http). @type protocol: string @param server: Which server to connect to. @type server: string @param port: Port @type port: int @param path: Path @type path: string @param sslContext: SSL Context describing the various SSL options. It is only supported in Python 2.7.9 or higher. @type sslContext: SSL.Context """ if protocol == "https": kwargs = {"context": sslContext} if sslContext else {} conn = http_client.HTTPSConnection(server, port=port, **kwargs) elif protocol == "http": conn = http_client.HTTPConnection(server, port=port) else: raise Exception("Protocol " + protocol + " not supported.") conn.request("GET", path) response = conn.getresponse() if response.status == 200: try: tree = ElementTree.fromstring(response.read()) return tree except ExpatError: pass return None ## Private method that returns an ElementTree describing the API versions ## supported by the specified server. The result will be vimServiceVersions.xml ## if it exists, otherwise vimService.wsdl if it exists, otherwise None.
def __init__(self, path): # Pass '' as the host to HTTPConnection; it doesn't really matter # what we pass (since we've overridden the connect method) as long # as it's a valid string. http_client.HTTPConnection.__init__(self, '') self.path = path
def connect(self): # Hijack the connect method of HTTPConnection to connect to the # specified Unix domain socket instead. Obey the same contract # as HTTPConnection.connect, which puts the socket in self.sock. sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.connect(self.path) self.sock = sock
def __init__(self, fd, port=None): assert port is None # invoke parent constructor http_client.HTTPConnection.__init__(self, "localhost") # self.sock was initialized by httplib.HTTPConnection # to point to a socket, overwrite it with a pipe. assert type(fd) == int and os.fstat(fd) self.sock = PipeSocket(fd, "client-connection")
def connect(self): httplib.HTTPConnection.connect(self) timeout = getattr(self, "_timeout", 0) if timeout: self.sock.settimeout(timeout)
def connect(self): # Connect to the proxy self.set_host_and_port(self.proxy, self.proxy_port) httplib.HTTPConnection.connect(self) self.set_host_and_port(self.real_host, self.real_port) timeout = getattr(self, "_timeout", 0) if timeout: self.sock.settimeout(timeout)
def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0): host = self.real_host if self.default_port != self.real_port: host = host + ':' + str(self.real_port) url = "http://%s%s" % (host, url) httplib.HTTPConnection.putrequest(self, method, url) self._add_auth_proxy_header()
def wire_HTTPConnection_to_WSGI(host, app): """Monkeypatches HTTPConnection so that if you try to connect to host, you are instead routed straight to the given WSGI app. After calling this method, when any code calls httplib.HTTPConnection(host) the connection object will be a fake. Its requests will be sent directly to the given WSGI app rather than through a socket. Code connecting to hosts other than host will not be affected. This method may be called multiple times to map different hosts to different apps. This method returns the original HTTPConnection object, so that the caller can restore the default HTTPConnection interface (for all hosts). """ class HTTPConnectionDecorator(object): """Wraps the real HTTPConnection class so that when you instantiate the class you might instead get a fake instance. """ def __init__(self, wrapped): self.wrapped = wrapped def __call__(self, connection_host, *args, **kwargs): if connection_host == host: return FakeHttplibConnection(app, host) else: return self.wrapped(connection_host, *args, **kwargs) oldHTTPConnection = httplib.HTTPConnection httplib.HTTPConnection = HTTPConnectionDecorator(httplib.HTTPConnection) return oldHTTPConnection
def tearDown(self): # restore original HTTPConnection object httplib.HTTPConnection = self.oldHTTPConnection super(WsgiLimiterProxyTest, self).tearDown()
def _vhd_stream_to_vdi(self, vhd_file_parser, vdi_ref, file_size): headers = {'Content-Type': 'application/octet-stream', 'Content-Length': '%s' % file_size} if self.host_url.scheme == 'http': conn = httplib.HTTPConnection(self.host_url.netloc) elif self.host_url.scheme == 'https': conn = httplib.HTTPSConnection(self.host_url.netloc) vdi_import_path = utils.get_vdi_import_path( self.session, self.task_ref, vdi_ref) try: conn.connect() except Exception: LOG.error('Failed connecting to host: %s', self.host_url.netloc) raise exception.HostConnectionFailure( host_netloc=self.host_url.netloc) try: conn.request('PUT', vdi_import_path, headers=headers) # Send the data already processed by vhd file parser firstly; # then send the remaining data from the stream. conn.send(vhd_file_parser.cached_buff) remain_size = file_size - len(vhd_file_parser.cached_buff) file_obj = vhd_file_parser.src_file while remain_size >= CHUNK_SIZE: chunk = file_obj.read(CHUNK_SIZE) remain_size -= CHUNK_SIZE conn.send(chunk) if remain_size != 0: chunk = file_obj.read(remain_size) conn.send(chunk) except Exception: LOG.error('Failed importing VDI from VHD stream - vdi_ref:%s', vdi_ref) raise exception.VdiImportFailure(vdi_ref=vdi_ref) finally: resp = conn.getresponse() LOG.debug("Connection response status/reason is " "%(status)s:%(reason)s", {'status': resp.status, 'reason': resp.reason}) conn.close()
def _connect(self): ''' Initialize an HTTP/HTTPS connection with chunked Transfer-Encoding to server:port with optional headers. ''' server = self._server port = self._port headers = self._headers ssl_enabled = self._ssl_enabled proxy_server, proxy_port = self._get_proxy_config() if (proxy_server and proxy_port): if ssl_enabled: context = self._get_ssl_context() self._conn = http_client.HTTPSConnection( proxy_server, proxy_port, context=context ) else: self._conn = http_client.HTTPConnection( proxy_server, proxy_port ) self._conn.set_tunnel(server, port) else: if ssl_enabled: context = self._get_ssl_context() self._conn = http_client.HTTPSConnection( server, port, context=context ) else: self._conn = http_client.HTTPConnection(server, port) self._conn.putrequest('POST', self._url) self._conn.putheader('Transfer-Encoding', 'chunked') for header in headers: self._conn.putheader(header, headers[header]) self._conn.endheaders() # Set blocking to False prevents recv # from blocking while waiting for a response. self._conn.sock.setblocking(False) self._bytes = six.b('') self._reset_retries() time.sleep(0.5)
def SerializeRequest(self, mo, info, args): if not IsChildVersion(self.version, info.version): raise GetVmodlType("vmodl.fault.MethodNotFound")(receiver=mo, method=info.name) nsMap = SOAP_NSMAP.copy() defaultNS = GetWsdlNamespace(self.version) nsMap[defaultNS] = '' # Add xml header and soap envelope result = [XML_HEADER, '\n', SOAP_ENVELOPE_START] # Add request context and samlToken to soap header, if exists reqContexts = GetRequestContext() if self.requestContext: reqContexts.update(self.requestContext) samlToken = getattr(self, 'samlToken', None) if reqContexts or samlToken: result.append(SOAP_HEADER_START) for key, val in iteritems(reqContexts): # Note: Support req context of string type only if not isinstance(val, six.string_types): raise TypeError("Request context key ({0}) has non-string value ({1}) of {2}".format(key, val, type(val))) ret = _SerializeToUnicode(val, Object(name=key, type=str, version=self.version), self.version, nsMap) result.append(ret) if samlToken: result.append('{0} {1} {2}'.format(WSSE_HEADER_START, samlToken, WSSE_HEADER_END)) result.append(SOAP_HEADER_END) result.append('\n') # Serialize soap body result.extend([SOAP_BODY_START, '<{0} xmlns="{1}">'.format(info.wsdlName, defaultNS), _SerializeToUnicode(mo, Object(name="_this", type=ManagedObject, version=self.version), self.version, nsMap)]) # Serialize soap request parameters for (param, arg) in zip(info.params, args): result.append(_SerializeToUnicode(arg, param, self.version, nsMap)) result.extend(['</{0}>'.format(info.wsdlName), SOAP_BODY_END, SOAP_ENVELOPE_END]) return ''.join(result).encode(XML_ENCODING) ## Subclass of HTTPConnection that connects over a Unix domain socket ## instead of a TCP port. The path of the socket is passed in place of ## the hostname. Fairly gross but does the job.
def __call__(self, url, method='GET', body=None, headers=None, timeout=None, **kwargs): """Make an HTTP request using http.client. Args: url (str): The URI to be requested. method (str): The HTTP method to use for the request. Defaults to 'GET'. body (bytes): The payload / body in HTTP request. headers (Mapping): Request headers. timeout (Optional(int)): The number of seconds to wait for a response from the server. If not specified or if None, the socket global default timeout will be used. kwargs: Additional arguments passed throught to the underlying :meth:`~http.client.HTTPConnection.request` method. Returns: Response: The HTTP response. Raises: google.auth.exceptions.TransportError: If any exception occurred. """ # socket._GLOBAL_DEFAULT_TIMEOUT is the default in http.client. if timeout is None: timeout = socket._GLOBAL_DEFAULT_TIMEOUT # http.client doesn't allow None as the headers argument. if headers is None: headers = {} # http.client needs the host and path parts specified separately. parts = urllib.parse.urlsplit(url) path = urllib.parse.urlunsplit( ('', '', parts.path, parts.query, parts.fragment)) if parts.scheme != 'http': raise exceptions.TransportError( 'http.client transport only supports the http scheme, {}' 'was specified'.format(parts.scheme)) connection = http_client.HTTPConnection(parts.netloc, timeout=timeout) try: _LOGGER.debug('Making request: %s %s', method, url) connection.request( method, path, body=body, headers=headers, **kwargs) response = connection.getresponse() return Response(response) except (http_client.HTTPException, socket.error) as caught_exc: new_exc = exceptions.TransportError(caught_exc) six.raise_from(new_exc, caught_exc) finally: connection.close()