2016-04-01 13 views
0

私は実際にpythonを使ってウェブアプリケーションでmutlipartデータを送信したいと考えています。私はこの便利なリクエストモジュール(http://requests-fr.readthedocs.org/en/latest/)を使用しています。Pythonでリクエストモジュールを使ってマルチパートデータを投稿

私はオーディオファイル(システムにローカルに保存されています)と2つのパラメータ(情報のためのGPS座標)を送信する必要があります。

私はすでにcurlコマンドでこれを行うためのマンネージを持っていますが、私はRequests Pythonの実装を探しています。 このcurlコマンドです:

curl -u "user:pass" -F '[email protected]' -F "latitude=42.44646" -F "longitude=8.46464" 'http://my_server_ip/web/rest/vocal' -v --digest

これは私がPythonの要求にそれをやろうとしている方法です:

url = "http://my_server_ip/web/rest/vocal" 
files = {'audio' : open('/PATH/record.wav','rb'),'latitude':42.44646,'longitude':8.46464} 

r = requests.post(url, auth=HTTPDigestAuth('user','pass'),data=files) 
r.json 
print r.json 

瞬間のために、私が得る唯一の応答が500エラーです。

誰かが間違っていることを理解していますか?あなたがそれを行うためのより良い解決策を見たら教えてください:)

おはようございます!

+0

あなたは 'みました...ファイル=ファイル) 'の代わりにあなたの投稿に'?data = files) '? – schwobaseggl

+0

はい! files =ファイルでは、私は400のエラーを受け取ります –

+0

http://requests.readthedocs.org/en/latest/user/quickstart/#post-a-multipart-encoded-file私は 'latitude'と' longitude'はありませんファイルであるので、 'files''dict'のキーにするべきではありません... – schwobaseggl

答えて

0

解決済み!

ソリューションは、ファイルやそのような件のデータ分離することである。

files = {'audio' : open('/PATH//record.wav','rb')} 
data = {'latitude':latitude,'longitude':longitude} 

をファイルやデータの両方のパラメータresquestウィットを構築:

r=requests.post(url,auth=HTTPDigestAuth('user','pass'),files=files,data=data) 
関連する問題