]> granicus.if.org Git - python/commitdiff
asyncio doc: the "Get HTTP headers" example now supports HTTPS
authorVictor Stinner <victor.stinner@gmail.com>
Sat, 11 Oct 2014 13:52:14 +0000 (15:52 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Sat, 11 Oct 2014 13:52:14 +0000 (15:52 +0200)
Doc/library/asyncio-stream.rst

index a4a997e6098e5c9ba0014b0e38ec93137c127186..19ec935a104ab4710871e3b1e38db8cf4c6fee0c 100644 (file)
@@ -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))