all Python 3urllib.requestterm
urllib.request.Request
opening URLs
A description of an HTTP request: URL, body, headers and method. Pass it to urlopen() when a plain URL is not enough.
Syntax
urllib.request.Request(url, data=None, headers={}, method=None)
The method is chosen for you: GET without data, POST with data, anything else via method='PUT'. data must be bytes: a str raises TypeError at send time. Header names are stored through str.capitalize(): 'user-agent' becomes 'User-agent', so get_header('User-Agent') returns None. Creating a Request touches no network — the request is sent only by urlopen().
Examples
import urllib.parse, urllib.request
data = urllib.parse.urlencode({'q': 'python'}).encode('ascii')
req = urllib.request.Request('http://example.com/search', data=data,
headers={'user-agent': 'demo'})
print(req.get_method(), req.host, req.selector) # → POST example.com /search
print(req.header_items()) # → [('User-agent', 'demo')]
print(req.get_header('User-Agent'), req.get_header('User-agent')) # → None demo
import urllib.request
req = urllib.request.Request('http://example.com/item/1', method='DELETE')
print(req.get_method(), req.full_url) # → DELETE http://example.com/item/1
See also
Open in the full glossarydocs.python.orgReport an inaccuracy