HTTP POST with urllib.request

Q

How to send an HTTP POST request with urllib.request? I want to submit a form to a Website.

✍: FYIcenter.com

A

To submit a form to a Website, you can use the urllib.request.urlopen() function with two arguments:

r = urllib.request.urlopen(url, data)

where:
   url can be a URL string or Request object
   data is request body as a binary string. 

Here is a Python example on how to send a POST request with body data:

>>> import urllib
>>> url = 'http://httpbin.org/post'
>>> data = b'userid=fyi&password=center'
>>> r = urllib.request.urlopen(url,data)
>>> b = r.read()
>>> print(b)
b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n
  "password": "center", \n    "userid": "fyi"\n  }, \n  "headers": {\n    
  "Accept-Encoding": "identity", \n    "Connection": "close", \n 
  "Content-Length": "26", \n  
  "Content-Type": "application/x-www-form-urlencoded", \n  
  "Host": "httpbin.org", \n 
  "User-Agent": "Python-urllib/3.6"\n  }, \n
  "json": null, \n  "url": "http://httpbin.org/post"\n}\n'

 

Using urllib.parse.urlencode()

http.client.HTTPResponse Objects

'urllib' Module - Internet Communication

⇑⇑ Python Tutorials

2018-09-13, 162👍, 0💬