Special characters like @ and & in cURL POST data

PostCurl

Post Problem Overview


How do I include special characters like @ and & in the cURL POST data? I'm trying to pass a name and password like:

curl -d name=john passwd=@31&3*J https://www.mysite.com

This would cause problems as @ is used for loading files and & for specifying more than one key/value. Is there some way I can escape these characters? \@ and \& don't seem to work.

Post Solutions


Solution 1 - Post

cURL > 7.18.0 has an option --data-urlencode which solves this problem. Using this, I can simply send a POST request as

curl -d name=john --data-urlencode passwd=@31&3*J https://www.example.com

Summarizing the comments, in case of mixed "good" and "bad" data and exclamation marks inside we can use on Windows:

curl -d "grant_type=client_credentials&client_id=super-client&acr_values=tenant:TNT123" --data-urlencode "client_secret=XxYyZ21D8E&%fhB6kq^mXQDovSZ%Q*!ipINme"  https://login.example.com/connect/token

Solution 2 - Post

How about using the entity codes...

@ = %40

& = %26

So, you would have:

curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com

Solution 3 - Post

Double quote (" ") the entire URL .It works.

curl "http://www.mysite.com?name=john&passwd=@31&3*J"

Solution 4 - Post

Just found another solutions worked for me. You can use '' sign before your one special.

passwd=\@31\&3*J

Solution 5 - Post

Try this:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com

Solution 6 - Post

If password has the special characters in it, just round the password with the single quote it will work.

curl -u username:'this|!Pa&*12' --request POST https://www.example.com

Solution 7 - Post

I did this

~]$ export A=g

~]$ export B=!

~]$ export C=nger


   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBernhard HeijstekView Question on Stackoverflow
Solution 1 - PostBernhard HeijstekView Answer on Stackoverflow
Solution 2 - PostBiagio ArobbaView Answer on Stackoverflow
Solution 3 - PostThusitha SumanadasaView Answer on Stackoverflow
Solution 4 - Postuser3650655View Answer on Stackoverflow
Solution 5 - PostAGOUDJIL MassinissaView Answer on Stackoverflow
Solution 6 - PostAbdul MajeedView Answer on Stackoverflow
Solution 7 - PostLordlebuView Answer on Stackoverflow