2016-04-07 10 views
2

я принципиально хочу сделать это:как размещать данные и двоичные данные с помощью urllib2 в питона

curl -X POST "http://URL?u=user&p=password" --data-binary @myconfig.json 

с urllib2.

Я нашел примеры для отправки только пользователя и пароля, или только двоичные файлы, но не оба одновременно, а некоторые противоречат друг другу.

Я делаю это, чтобы создать influxdb с политикой хранения на основе команд здесь:

https://docs.influxdata.com/influxdb/v0.8/advanced_topics/sharding_and_storage/

curl -X POST "http://localhost:8086/cluster/database_configs/mydb?u=root&p=root" --data-binary @myconfig.json 

Спасибо!

ответ

3
import urllib2 
import json 

url = 'http://url.com?u=user&p=pass' 
data = json.dumps({'config':'configData'}) # your JSON File goes in here, as argument to dumps. 
cont_len = len(data) 
req = urllib2.Request(url, data, {'Content-Type': 'application/json', 'Content-Length': cont_len}) 
f = urllib2.urlopen(req) 
response = f.read() 
f.close() 

Это решает!

Обратите внимание, что с urllib2 вы не можете указать файл .json. Вы просто помещаете его содержимое в функцию json.dumps.

+0

не работает, говорит HTTP Ошибка 400: неверный запрос Я собираюсь добавить дополнительную информацию к вопросу. –

+0

Okay @GilZellner. Пожалуйста, сделай. – Adeola

+0

царапины, похоже, что ошибка была на моем конце в создании URL. Благодаря! –

Смежные вопросы