2012-07-12 17 views
5

Me gustaría saber el equivalente de este comando curl en pycurl:pycurl equivalente de "rizar --Hojas-binario"

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

Nota: La declaración rizo anterior utiliza el método POST. Necesito usar esto para compatibilidad con mi script de servidor.

Respuesta

5

La biblioteca requests está destinado a mantener las cosas como esta sencilla:

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

O dependiendo de cómo el extremo receptor espera de datos:

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

Gracias Jon, el hecho de que usted ha sugerido una alternativa al módulo de pycurl que permitirá que tales Pythonic de una línea que hace que para una respuesta mejor que una implementación real pycurl. – ChrisGuest

2

De libcurl, setopt (...) tratar esta opción:

CURLOPT_POSTFIELDSIZE

Si desea publicar datos en el servidor sin permitir que libcurl haga un strlen() para medir el tamaño de los datos, se debe usar esta opción. Cuando se utiliza esta opción, puede publicar datos completamente binarios, que de lo contrario es probable que fallen. Si este tamaño se establece en -1, la biblioteca usará strlen() para obtener el tamaño.

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