The cURL command, short for “Client for URLs“, is a versatile command-line tool for transferring data across various network protocols. Supporting an extensive array of protocols such as HTTP, HTTPS, FTP, SMTP, and many more, it has found a central place in the toolkit of many network and system administrators.
Starting with Windows 10, Microsoft has included cURL by default in the Command Prompt. This means that Windows 11 also supports cURL commands without needing to install additional software. This comprehensive guide will focus on using cURL in the Command Prompt on Windows 11, covering various examples such as downloading and uploading files, sending an email, managing cookies, handling HTTP headers, dealing with SSL certificates, and more.
Page Contents
Verifying cURL Installation in Windows 11
First, let’s verify that cURL is installed on your system. Open Command Prompt and type in the following command:
curl --version
This command should display the installed version of cURL on your system, confirming its installation.
Also see: How to use FTP via Command Line (CMD) on Windows 11
Downloading Files with cURL
One of the most common uses of cURL is downloading files from the web. The process is simple and intuitive. To download a file, use the -O
(or --remote-name
) option followed by the URL of the file:
curl -O https://example.com/myfile.txt
This command will download the file myfile.txt
from example.com
and save it in the current working directory.
To save the downloaded file with a different name, use the -o
(or --output
) option:
curl -o renamedfile.txt https://example.com/myfile.txt
The -o
option followed by a filename allows you to specify a different name for the downloaded file.
Related resource: How to Download an FTP File Using CMD in Windows 11/10
Uploading a File using cURL
cURL enables file uploads to servers using several protocols, such as FTP, SFTP, and HTTP/HTTPS. Here’s an example using FTP:
curl -T localfile.txt ftp://example.com/ --user username:password
This command will upload localfile.txt
from your local machine to example.com
via FTP. Replace username:password
with your actual username and password for the FTP server.
Sending an Email with cURL
cURL’s support for the SMTP protocol means you can use it to send emails. This is particularly useful for sending automated notification emails from scripts. Here’s an example:
curl --url smtps://smtp.example.com --ssl-reqd --mail-from [email protected] --mail-rcpt recei[email protected] --upload-file email.txt --user username:password
In this example, email.txt
is a text file containing the email’s subject, headers, and body. Replace smtp.example.com
, [email protected]
, [email protected]
, and username:password
with your SMTP server details and email information.
Managing Cookies with cURL
Cookies can be managed in cURL commands by using the -b
(or --cookie
) option to send cookies, and the -c
(or --cookie-jar
) option to store cookies. Here’s an example of sending a cookie:
curl -b "name=value" https://example.com
And here’s an example of storing the server’s cookies into a file:
curl -c cookies.txt https://example.com
Setting HTTP Headers with cURL
In many instances, particularly when working with APIs, you may need to set specific HTTP headers in your request. This can be achieved with cURL using the -H
(or --header
) option:
curl -H "Content-Type: application/json" -H "Authorization: Bearer your_token" https://api.example.com
Working with SSL Certificates
cURL allows you to troubleshoot SSL certificates, check their validity, and even download them. To check the validity of a certificate, you can use the following command:
curl -vI https://example.com 2>&1 | findstr "expire date"
In this example, the command uses cURL to check the validity of an SSL certificate by retrieving the server’s response headers and searching for the “expire date” string. It allows for quick verification of SSL certificate expiration dates.
Linked issue: Fixing Website’s Security Certificate Error on Windows 11/10
Making POST Requests with cURL
A POST request is a way to send data to a server. With cURL, making POST requests is straightforward. Let’s say we want to send some JSON data to an API. We can do so like this:
curl -d "{'key1':'value1', 'key2':'value2'}" -H "Content-Type: application/json" -X POST https://api.example.com
The -d
(or --data
) option specifies the data to be sent, while the -H
(or --header
) option sets the Content-Type header to application/json
. The -X
(or --request
) option specifies that this is a POST request.
cURL and REST APIs
cURL is also invaluable when working with REST APIs, which use standard HTTP methods like GET, POST, PUT, DELETE, etc. We have already seen examples of GET (downloading files) and POST (sending data) operations. Now let’s look at how to use cURL for a PUT request, typically used for updating resources:
curl -d "{'key1':'value1', 'key2':'value2'}" -H "Content-Type: application/json" -X PUT https://api.example.com/resource/1
And here’s how to make a DELETE request, used to delete a resource:
curl -X DELETE https://api.example.com/resource/1
Concluding Thoughts
Running cURL from the Command Prompt in Windows 11 is not only a simple process, but also a powerful tool that allows you to interact with web services directly from your machine, automating tasks, testing web servers, and much more. It’s a tool that is as powerful as it is ubiquitous – cURL is essentially available on every platform, making your scripts portable and universal.
If you’re ever unsure about a cURL command or need to check how to write one, don’t forget you have a handy helper: the curl --help
command. This is like a mini instruction book right at your fingertips, giving you a fast rundown of what cURL can do. It’s the first place to go if you have questions or need help with cURL.