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 から、setopt(...) 次のオプションを試してください。
CURLOPT_POSTFIELDSIZE
libcurl に strlen() を実行させてデータ サイズを測定させずに、データをサーバーにポストする場合は、このオプションを使用する必要があります。このオプションを使用すると、完全にバイナリ データを送信できますが、そうしないと失敗する可能性があります。このサイズが -1 に設定されている場合、ライブラリは strlen() を使用してサイズを取得します。
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTPOSTFIELDSIZE