我想知道在pycurl中等价于该curl命令的方式:
curl --data-binary @binary_data_file.bin 'http://server/myapp/method'
注意:上述curl语句使用了POST方法。我需要这样做以便与我的服务器脚本兼容。
requests
库的目的是让这样的事情变得简单:
import requests
r = requests.post('http://server/myapp/method', data={'aaa': 'bbb'})
或者根据接收方对数据的期望:
import requests
r = requests.post('http://server/myapp/method',
data=file('binary_data_file.bin','rb').read())
如果你想向服务器发送数据,而不让libcurl使用strlen()来测量数据大小,则可以尝试使用libcurl中的setopt(...)选项:
CURLOPT_POSTFIELDSIZE
当使用此选项时,您可以完全以二进制方式发送数据,否则可能会失败。如果将此大小设置为-1,则库将使用strlen()来获取大小。
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTPOSTFIELDSIZE