如何在python中使用urllib2发布数据和二进制数据

时间:2016-04-07 14:19:23

标签: python urllib2 influxdb

我基本上想要这样做:

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

谢谢!

1 个答案:

答案 0 :(得分: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函数。