b'Redirecting to <a href="http://bugs.python.org/issue12524">http://bugs.python.org/issue12524</a>'
>>> conn.close()
-be created via ``PUT`` request. Here is an example session that shows how to do
-``PUT`` request using http.client::
+ Client side ``HTTP PUT`` requests are very similar to ``POST`` requests. The
+ difference lies only the server side where HTTP server will allow resources to
++be created via ``PUT`` request. It should be noted that custom HTTP methods
+++are also handled in :class:`urllib.request.Request` by sending the appropriate
+++method attribute.Here is an example session that shows how to do ``PUT``
++request using http.client::
+
+ >>> # This creates an HTTP message
+ >>> # with the content of BODY as the enclosed representation
+ >>> # for the resource http://localhost:8080/foobar
+ ...
+ >>> import http.client
+ >>> BODY = "***filecontents***"
+ >>> conn = http.client.HTTPConnection("localhost", 8080)
+ >>> conn.request("PUT", "/file", BODY)
+ >>> response = conn.getresponse()
+ >>> print(resp.status, response.reason)
+ 200, OK
.. _httpmessage-objects:
data = sys.stdin.read()
print('Content-type: text-plain\n\nGot Data: "%s"' % data)
++Here is an example of doing a ``PUT`` request using :class:`Request`::
++
++ import urllib.request
++ DATA=b'some data'
++ req = urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')
++ f = urllib.request.urlopen(req)
++ print(f.status)
++ print(f.reason)
++
Use of Basic HTTP Authentication::
import urllib.request