Using urllib.request.Request Object

Q

How to use the urllib.request.Request object to build more complex HTTP request?

✍: FYIcenter.com

A

The urllib.request.urlopen() function can take a urllib.request.Request object to let you building more complex HTTP requests.

You can use the Request() constructor to build a Request object:

q = urllib.request.Request(url, data=None, headers={}, 
  origin_req_host=None, unverifiable=False, method=None)

where:
   url should be a string containing a valid URL.
   data is request body as a binary string, file-like object, or iterable.
   headers should be a dictionary of request headers. 

Here is a Python example on how to build a complex HTTP POST request using a urllib.request.Request object:

>>> import urllib
>>> url = 'http://httpbin.org/post'
>>> form = {'user':'fyicenter', 'msg':'hello world!'}
>>> data = urllib.parse.urlencode(form)
>>> data = bytes(data,'utf8')
>>> headers = {'Referer':'http://dev.fyicenter.com'}
>>> req = urllib.request.Request(url,data,headers,method='POST')
>>> r = urllib.request.urlopen(req)
>>> b = r.read()
>>> print(b)
b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  
 "form": {\n    "msg": "hello world!", \n    "user": "fyicenter"\n  }, \n  
 "headers": {\n    "Accept-Encoding": "identity", \n  
  "Connection": "close", \n    "Content-Length": "33", \n
  "Content-Type": "application/x-www-form-urlencoded", \n 
  "Host": "httpbin.org", \n   
  "Referer": "http://dev.fyicenter.com", \n 
  "User-Agent": "Python-urllib/3.6"\n  }, \n  
 "url": "http://httpbin.org/post"\n}\n'

 

urllib.request.Request Properties and Functions

Using urllib.parse.urlencode()

'urllib' Module - Internet Communication

⇑⇑ Python Tutorials

2018-09-13, 167👍, 0💬