2016-04-01 1 views
0

Я действительно хочу отправить данные mutlipart в веб-приложение с помощью python. Я использую этот полезный полезный модуль Requests (http://requests-fr.readthedocs.org/en/latest/).Опубликовать многостраничные данные в python с модулем Requests

Мне нужно отправить аудиофайл (сохраненный в локальном режиме в системе) и 2 параметра (GPS-координаты для информации).

У меня уже есть возможность сделать это с помощью команды curl, но я ищу реализацию python запросов. Это локон команда:

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

Это, как я пытаюсь сделать это в питона запросов:

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

Да! с файлами = файлы, я получаю ошибку 400 –

+0

http://requests.readthedocs.org/en/latest/user/quickstart/#post-a-multipart-encoded-file Я предполагаю, что 'широта',' долгота' не файлы, поэтому они не должны быть ключами в '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) 
Смежные вопросы