【问题标题】:how to post data and binary data using urllib2 in python如何在python中使用urllib2发布数据和二进制数据
【发布时间】:2016-04-07 14:19:23
【问题描述】:

我基本上想这样做:

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

谢谢!

【问题讨论】:

    标签: python urllib2 influxdb


    【解决方案1】:
    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 函数即可。

    【讨论】:

    • 不起作用,说 HTTP 错误 400: Bad Request 我将在问题中添加更多信息。
    • 好的@GilZellner。请做。
    • 从头开始,看起来错误是在我创建 url 的时候。谢谢!
    • 这行得通,因为有问题的数据不是真正的二进制数据,它是 json,它是一个字符串。如果是字节,这是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多