pycurl等价于“curl --data-binary”

10

我想知道在pycurl中等价于该curl命令的方式:

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

注意:上述curl语句使用了POST方法。我需要这样做以便与我的服务器脚本兼容。

2个回答

10

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())

谢谢Jon,你提供了一个替代的模块,可以使用Pythonic一行代码实现,这比实际的pycurl实现更好。 - ChrisGuest

2

如果你想向服务器发送数据,而不让libcurl使用strlen()来测量数据大小,则可以尝试使用libcurl中的setopt(...)选项:

CURLOPT_POSTFIELDSIZE

当使用此选项时,您可以完全以二进制方式发送数据,否则可能会失败。如果将此大小设置为-1,则库将使用strlen()来获取大小。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接