CURL is a command-line tool that is used to transfer data to or from a server. It supports a variety of protocols, including HTTP, HTTPS, FTP, and more. One of the most common uses of CURL is to make HTTP requests and send or receive JSON data. In this article, we will cover how to use CURL to make a POST request with a JSON payload, including code examples in various programming languages.
To make a POST request with a JSON payload using CURL, you can use the -X (or –request) flag to specify the request method, -H (or –header) flag to set the Content-Type to application/json, and -d (or –data) flag to provide the JSON data as a string. Here is an example of how to make a POST request with a JSON payload using CURL in the command line:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John Smith","age":30}' https://example.com/api
You can also use CURL to make a POST request with a JSON payload in various programming languages. Here are a few examples:
Python
You can use the requests
library to make a POST request with a JSON payload in Python. Here is an example:
import json
import requests
data = {"name":"John Smith","age":30}
headers = {"Content-Type":"application/json"}
response = requests.post("https://example.com/api", data=json.dumps(data), headers=headers)
print(response.status_code)
print(response.text)
Java
You can use the HttpUrlConnection
class to make a POST request with a JSON payload in Java. Here is an example:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://example.com/api";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
String jsonInputString = "{\"name\":\"John Smith\",\"age\":30}";
con.setDoOutput(true);
try(DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
wr.write(jsonInputString.getBytes());
}
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
}
}
C#
You can use the HttpWebRequest
class to make a POST request with a JSON payload in C
Sending JSON data in the request body
When sending a POST request with JSON data, it's common to include the JSON data in the request body. This can be done by setting the request body to a string containing the JSON data, and setting the Content-Type header to application/json. Here's an example of how to send JSON data in the request body using CURL:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John Smith","age":30}' https://example.com/api
This example uses the -d (or –data) flag to set the request body, and the -H (or –header) flag to set the Content-Type header to application/json.
In Python, you can use the json.dumps() method to convert a Python dictionary to a JSON string, and then pass that string as the data argument to the requests.post() method:
import json
import requests
data = {"name":"John Smith","age":30}
headers = {"Content-Type":"application/json"}
response = requests.post("https://example.com/api", data=json.dumps(data), headers=headers)
print(response.status_code)
print(response.text)
Similarly in Java, you can use the DataOutputStream.writeBytes() method to write the JSON data to the request body.
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://example.com/api";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
String jsonInputString = "{\"name\":\"John Smith\",\"age\":30}";
con.setDoOutput(true);
try(DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
wr.writeBytes(jsonInputString);
}
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
}
}
Handling the response
After sending a POST request with JSON data, the server will return a response. The response usually contains a status code and a message, indicating whether the request was successful or not.
In CURL, the response is printed to the command line. You can use the -i (or –include) flag to include the response headers in the output, and the -w (or –write-out) flag to format the output.
In Python, you can use the requests.post() method to send a POST
Popular questions
- What is CURL?
CURL is a command-line tool that is used to transfer data to or from a server. It supports a variety of protocols, including HTTP, HTTPS, FTP, and more.
- How can I make a POST request with a JSON payload using CURL?
To make a POST request with a JSON payload using CURL, you can use the -X (or –request) flag to specify the request method, -H (or –header) flag to set the Content-Type to application/json, and -d (or –data) flag to provide the JSON data as a string. Here is an example of how to make a POST request with a JSON payload using CURL in the command line:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John Smith","age":30}' https://example.com/api
- Can I send JSON data in the request body while making a POST request?
Yes, when sending a POST request with JSON data, it's common to include the JSON data in the request body. This can be done by setting the request body to a string containing the JSON data, and setting the Content-Type header to application/json.
- How do I handle the response after sending a POST request with JSON data?
After sending a POST request with JSON data, the server will return a response. The response usually contains a status code and a message, indicating whether the request was successful or not. In CURL, the response is printed to the command line. You can use the -i (or –include) flag to include the response headers in the output, and the -w (or –write-out) flag to format the output.
- Can you give examples of making a POST request with a JSON payload in various programming languages?
Yes, examples of making a POST request with a JSON payload in various programming languages, such as Python, Java, and C#, were provided in the article.
Tag
Networking