Python Requests: POST Form Data with Code Examples
The Python Requests library is one of the most popular libraries for making HTTP requests. In this article, we will cover how to use the requests
library to make a POST request with form data.
The following are the steps to make a POST request with form data using the requests
library:
- Import the
requests
library.
import requests
- Make the POST request with form data.
url = 'https://www.example.com/api/submit_form'
data = {'field1': 'value1', 'field2': 'value2'}
response = requests.post(url, data=data)
In the code above, url
is the URL of the API endpoint that will receive the form data. The data
dictionary contains the form data that will be sent in the request body.
- Check the status code of the response to verify that the request was successful.
if response.status_code == 200:
print('Success')
else:
print('Failed')
- Access the response content.
print(response.content)
In the code above, the response.content
property returns the response body as a byte string. If the response content is JSON, it can be converted to a Python dictionary using the json
library.
import json
response_dict = json.loads(response.content)
Example: Submit a Form to a REST API
Let's consider a scenario where we need to submit a form to a REST API. The API endpoint is https://www.example.com/api/submit_form
and the form data includes two fields: name
and email
.
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
response = requests.post(url, data=data)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
In the code above, we make a POST request to the API endpoint with the form data. If the request is successful, the status code will be 200
and the response content will be printed.
Example: Upload a File
In addition to form data, the requests
library can also be used to upload a file. To upload a file, we need to add the file data to the request body.
import requests
url = 'https://www.example.com/api/upload_file'
file = {'file': ('file.pdf', open('file.pdf', 'rb'))}
response = requests.post(url, files=file)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
In the code above, we open the file in binary mode and add it to the request using the files
parameter. The files
parameter is a dictionary where the key is the name of the form field that will contain the file data
Handling Request Headers
In some cases, we may need to include additional information in the request headers. The requests
library provides an easy way to add headers to a request.
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url, data=data, headers=headers)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
In the code above, we add a Content-Type
header to the request to specify the format of the request body. This is a common header that is used in POST requests with form data.
Handling Cookies
In some cases, we may need to send cookies with a request. The requests
library provides an easy way to add cookies to a request.
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
cookies = {'session_id': '1234567890'}
response = requests.post(url, data=data, cookies=cookies)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
In the code above, we add a session_id
cookie to the request. This is a common use case for sending a session cookie with a request.
Handling Redirects
In some cases, a server may redirect a request to a different URL. By default, the requests
library will automatically follow redirects. If we need to disable this behavior, we can set the allow_redirects
parameter to False
.
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
response = requests.post(url, data=data, allow_redirects=False)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
In the code above, we set the allow_redirects
parameter to False
to disable automatic redirects. If a server returns a redirect status code, the response
object will contain the redirect URL in the response.headers['Location']
header.
Conclusion
In this article, we covered how to use the requests
library to make a POST request with form data. We also covered additional topics such as handling request headers, cookies, and redirects. With the requests
library, making HTTP requests in Python is easy and convenient.
Popular questions
- What is the
requests
library in Python?
The requests
library is a third-party library in Python that allows you to send HTTP requests and handle responses. It provides a simple and convenient way to interact with HTTP-based APIs, making it a popular choice among Python developers.
- How do you make a POST request with form data using the
requests
library in Python?
To make a POST request with form data using the requests
library in Python, you need to pass the form data as a dictionary to the data
parameter in the requests.post()
function. Here's an example:
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
response = requests.post(url, data=data)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
- How do you add headers to a POST request with form data using the
requests
library in Python?
To add headers to a POST request with form data using the requests
library in Python, you need to pass a dictionary of headers to the headers
parameter in the requests.post()
function. Here's an example:
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url, data=data, headers=headers)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
- How do you send cookies with a POST request with form data using the
requests
library in Python?
To send cookies with a POST request with form data using the requests
library in Python, you need to pass a dictionary of cookies to the cookies
parameter in the requests.post()
function. Here's an example:
import requests
url = 'https://www.example.com/api/submit_form'
data = {'name': 'John Doe', 'email': 'johndoe@example.com'}
cookies = {'session_id': '1234567890'}
response = requests.post(url, data=data, cookies=cookies)
if response.status_code == 200:
print('Success')
else:
print('Failed')
print(response.content)
- How do you handle redirects in a POST request with form data using the
requests
library in Python?
To handle redirects in a POST request with form data using the requests
library in Python, you can set the allow_redirects
parameter to False
in the requests.post()
function. This will prevent the requests
library from automatically following redirects. Here's an example:
import requests
url = 'https://
### Tag
HTTP.