2013-04-22 9 views
13

से पोस्ट डेटा मैंने फ़ाइलों से डेटा के साथ POST अनुरोध भेजने के लिए कर्ल का उपयोग किया है।पायथन अनुरोध - फ़ाइल

मैं पाइथन अनुरोध मॉड्यूल का उपयोग करके इसे प्राप्त करने की कोशिश कर रहा हूं। यहाँ मेरी अजगर स्क्रिप्ट

import requests 
payload=open('data','rb').read() 
r = requests.post('https://IP_ADDRESS/rest/rest/2', auth=('userid', 'password'), data=payload , verify=False) 
print r.text 

डाटा फ़ाइल

नीचे
'ID' : 'ISM03' 

की तरह लग रहा है लेकिन मेरी स्क्रिप्ट फ़ाइल से डेटा पोस्टिंग नहीं है। क्या मुझसे कोई चूक हो रही है।

कर्ल में, मैं की तरह

नीचे
Curl --data @filename -ik -X POST 'https://IP_ADDRESS/rest/rest/2' 

उत्तर

30

आप यहाँ .read() का उपयोग करने के लिए, बस सीधे वस्तु स्ट्रीम की जरूरत नहीं है एक कमांड किया करते थे। आपको सामग्री-प्रकार शीर्षलेख को स्पष्ट रूप से सेट करने की आवश्यकता है; curl करता है जब --data का उपयोग कर, लेकिन requests नहीं करता है: इतना है कि यह भी स्वत: बंद हो आप के लिए जब ब्लॉक बाहर निकलता है (उदाहरण के लिए एक अपवाद तब होता है

with open('data','rb') as payload: 
    headers = {'content-type': 'application/x-www-form-urlencoded'} 
    r = requests.post('https://IP_ADDRESS/rest/rest/2', auth=('userid', 'password'), 
         data=payload, verify=False, headers=headers) 

मैं एक संदर्भ प्रबंधक के रूप में फ़ाइल खोलने वस्तु का उपयोग किया है या requests.post() सफलतापूर्वक लौटाता है)।

+5

यह कैसे है, कि आप हमेशा सबसे कठिन पायथन प्रश्नों का उत्तर देने लगते हैं? –

+1

मेरे द्वारा पोस्ट की गई हर चीज़ पर विश्वास न करें .. पहले संशोधन में एक त्रुटि हुई थी। –

+0

बहुत देर हो चुकी है, बहुत देर हो चुकी है! एक्सडी –

संबंधित मुद्दे