2012-04-08 11 views
33

मैं कर्ल पोस्ट डेटा में @ और & जैसे विशेष वर्ण कैसे शामिल करूं?विशेष वर्ण जैसे @ और & curl पोस्ट डेटा

curl -d name=john [email protected]&3*J https://www.mysite.com 

इस समस्या का कारण बन के रूप में @ लोड हो रहा है फ़ाइलों के लिए और एक से अधिक कुंजी/मान निर्दिष्ट करने के लिए प्रयोग किया जाता है &: मैं एक नाम और पासवर्ड की तरह पारित करने के लिए कोशिश कर रहा हूँ। क्या मैं इन पात्रों से बच सकता हूं? \@ और \& काम नहीं लग रहा है।

उत्तर

39

cURL> 7.18.0 एक विकल्प होता है --data-urlencode जो इस समस्या को हल करता है। इस का उपयोग करना, मैं बस के रूप में

curl -d name=john --data-urlencode [email protected]&3*J https://www.mysite.com 
+0

क्या यह हेडर के लिए भी काम करेगा? –

+0

मेरे पास 7.52.1 है और मैं इसे काम करने के लिए नहीं मिल सकता ... मैं कर सकता हूं --डेटा-urlencode "कुछ = यह एक परीक्षण है" लेकिन डबल कोट्स या @ प्रतीकों के साथ नहीं ... –

27

इकाई कोड ...

@ = %40

& = %26

तो उपयोग के बारे में है, तो आप के लिए होता है कैसे:

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

0

एक पोस्ट अनुरोध भेज सकते हैं मैं इस

~]$ export A=g 

~]$ export B=! 

~]$ export C=nger 


    curl http://<>USERNAME<>1:[email protected]<>URL<>/<>PATH<>/ 
10

दोहरे उद्धरण किया ("") पूरे URL यह काम करता है।

curl "http://www.mysite.com?name=john&[email protected]&3*J" 
+2

अनुरोध माना जाता है एक पोस्ट बनो, एक जीईटी नहीं। –

3

इस प्रयास करें:

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

अगर विस्मयादिबोधक बिंदु ("!") विशेष वर्णों में से एक है तो काम नहीं करता है। –

1

बस पाया एक और समाधान मेरे लिए काम किया। आप अपने एक विशेष से पहले '\' चिह्न का उपयोग कर सकते हैं।

passwd=\@31\&3*J 
संबंधित मुद्दे