2012-07-12 14 views
5

मैं pycurl में यह कर्ल आदेश के बराबर जानना चाहते हैं:pycurl समकक्ष "कर्ल --data-बाइनरी"

curl --data-binary @binary_data_file.bin 'http://server/myapp/method' 

ध्यान दें: ऊपर कर्ल बयान POST विधि का उपयोग करता है। मुझे अपनी सर्वर स्क्रिप्ट के साथ संगतता के लिए इसका उपयोग करने की आवश्यकता है।

उत्तर

5

requests पुस्तकालय इस सरल तरह बातें रखने का मतलब है:

import requests 
r = requests.post('http://server/myapp/method', data={'aaa': 'bbb'}) 

या कैसे प्राप्त अंत की उम्मीद के आधार पर डेटा:

import requests 
r = requests.post('http://server/myapp/method', 
    data=file('binary_data_file.bin','rb').read()) 
+0

धन्यवाद जॉन, तथ्य यह है कि आप pycurl के लिए एक विकल्प मॉड्यूल ऐसे pythonic एक-लाइनर्स एक वास्तविक pycurl कार्यान्वयन तुलना में एक बेहतर जवाब के लिए बनाता है की अनुमति देगा कि सुझाव दिया है। – ChrisGuest

2

libcurl से, setopt (...) की कोशिश इस विकल्प:

CURLOPT_POSTFIELDSIZE

यदि आप डेटा आकार को मापने के लिए libcurl को एक strlen() करने के बिना सर्वर पर डेटा पोस्ट करना चाहते हैं, तो इस विकल्प का उपयोग किया जाना चाहिए। जब इस विकल्प का उपयोग किया जाता है तो आप पूरी तरह बाइनरी डेटा पोस्ट कर सकते हैं, जो अन्यथा असफल होने की संभावना है। यदि यह आकार -1 पर सेट है, तो पुस्तकालय आकार प्राप्त करने के लिए strlen() का उपयोग करेगा।

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTPOSTFIELDSIZE