2012-07-12 14 views
5

Ben pycurl bu bukle komutunun eşdeğerini bilmek istiyorum:pycurl eşdeğeri "kıvrılıp --bilgi-ikili"

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

Not: Yukarıdaki bukle deyimi POST yöntemini kullanır. Bunu sunucu betiğimle uyumluluk için kullanmam gerekiyor.

cevap

5

requests kütüphane bu basit gibi şeyler tutmak anlamına gelir:

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

Ya alıcı uç beklediğini şekline bağlı olarak veriler:

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

Teşekkür Jon, böyle pythonic tek gömlekleri gerçek pycurl uygulanması daha iyi bir yanıt için yapar sağlayacak pycurl alternatif modülü önerdim gerçeği. – ChrisGuest

2

, setopt (...) denemek Bu seçenek:

CURLOPT_POSTFIELDSIZE

Veri boyutunu ölçmek için libcurl'a bir strlen() yapmadan veriyi sunucuya göndermek isterseniz, bu seçenek kullanılmalıdır. Bu seçenek kullanıldığında, aksi takdirde başarısız olma ihtimali olan tamamen ikili verileri yayınlayabilirsiniz. Bu boyut -1 olarak ayarlanırsa, kitaplık boyutu almak için strlen() kullanır.

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