2012-07-12 14 views
5

Mi piacerebbe sapere l'equivalente di questo comando curl in pycurl:pycurl equivalente di "arricciare --data-binary"

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

Nota: Il riccio dichiarazione di cui sopra utilizza il metodo POST. Devo usare questo per la compatibilità con il mio script del server.

risposta

5

La biblioteca requests ha lo scopo di mantenere le cose in questo modo semplice:

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

O a seconda di come alla fine la ricezione di dati si aspetta:

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

Grazie Jon, il fatto che hai suggerito un modulo alternativo per pycurl che consentirà tali Pythonic one-liners fa per una risposta migliore di una effettiva attuazione pycurl. – ChrisGuest

2

Da libcurl, setopt (...) provate questa opzione:

CURLOPT_POSTFIELDSIZE

Se si desidera inviare dati al server senza consentire a libcurl di eseguire uno strlen() per misurare la dimensione dei dati, è necessario utilizzare questa opzione. Quando viene utilizzata questa opzione, è possibile pubblicare dati binari completi, che altrimenti potrebbero fallire. Se questa dimensione è impostata su -1, la libreria utilizzerà strlen() per ottenere la dimensione.

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