mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
asyncio doc: the "Get HTTP headers" example now supports HTTPS
This commit is contained in:
parent
4cc0551773
commit
5121a9ba4a
1 changed files with 16 additions and 6 deletions
|
@ -238,8 +238,11 @@ IncompleteReadError
|
|||
Read bytes string before the end of stream was reached (:class:`bytes`).
|
||||
|
||||
|
||||
Example
|
||||
=======
|
||||
Stream examples
|
||||
===============
|
||||
|
||||
Get HTTP headers
|
||||
----------------
|
||||
|
||||
Simple example querying HTTP headers of the URL passed on the command line::
|
||||
|
||||
|
@ -250,10 +253,14 @@ Simple example querying HTTP headers of the URL passed on the command line::
|
|||
@asyncio.coroutine
|
||||
def print_http_headers(url):
|
||||
url = urllib.parse.urlsplit(url)
|
||||
reader, writer = yield from asyncio.open_connection(url.hostname, 80)
|
||||
query = ('HEAD {url.path} HTTP/1.0\r\n'
|
||||
'Host: {url.hostname}\r\n'
|
||||
'\r\n').format(url=url)
|
||||
if url.scheme == 'https':
|
||||
connect = asyncio.open_connection(url.hostname, 443, ssl=True)
|
||||
else:
|
||||
connect = asyncio.open_connection(url.hostname, 80)
|
||||
reader, writer = yield from connect
|
||||
query = ('HEAD {path} HTTP/1.0\r\n'
|
||||
'Host: {hostname}\r\n'
|
||||
'\r\n').format(path=url.path or '/', hostname=url.hostname)
|
||||
writer.write(query.encode('latin-1'))
|
||||
while True:
|
||||
line = yield from reader.readline()
|
||||
|
@ -263,6 +270,9 @@ Simple example querying HTTP headers of the URL passed on the command line::
|
|||
if line:
|
||||
print('HTTP header> %s' % line)
|
||||
|
||||
# Ignore the body, close the socket
|
||||
writer.close()
|
||||
|
||||
url = sys.argv[1]
|
||||
loop = asyncio.get_event_loop()
|
||||
task = asyncio.async(print_http_headers(url))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue