2012-07-12 25 views
5

Tôi muốn biết tương đương với lệnh curl này trong pycurl:pycurl tương đương với "cuộn tròn --data nhị phân"

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

Lưu ý: Câu lệnh curl trên sử dụng phương thức POST. Tôi cần phải sử dụng điều này để tương thích với kịch bản máy chủ của tôi.

Trả lời

5

Thư viện requests có nghĩa là để giữ cho mọi thứ đơn giản như này:

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

Hoặc tùy thuộc vào cách kết thúc nhận hy vọng dữ liệu:

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

Cảm ơn Jon, thực tế là bạn đã gợi ý một module thay thế cho pycurl mà sẽ cho phép như vậy pythonic một lớp lót làm cho một câu trả lời tốt hơn so với một thực hiện pycurl thực tế. – ChrisGuest

2

Từ libcurl, setopt (...) thử tùy chọn này:

CURLOPT_POSTFIELDSIZE

Nếu bạn muốn đăng dữ liệu lên máy chủ mà không cho phép libcurl thực hiện strlen() để đo kích thước dữ liệu, tùy chọn này phải được sử dụng. Khi tùy chọn này được sử dụng, bạn có thể đăng dữ liệu nhị phân hoàn toàn, nếu không có khả năng thất bại. Nếu kích thước này được đặt thành -1, thư viện sẽ sử dụng strlen() để lấy kích thước.

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

Các vấn đề liên quan