如何将数据传递给urllib3 POST请求方法?

时间:2015-08-30 11:52:03

标签: python python-2.7 python-requests urllib3

我想使用Cloning into 'jpeginfo'... remote: Counting objects: 182, done. remote: Total 182 (delta 0), reused 0 (delta 0), pack-reused 182R Receiving objects: 100% (182/182), 115.71 KiB | 140.00 KiB/s, done. Resolving deltas: 100% (99/99), done. Checking connectivity... done. fatal: cannot create directory at 'aux': Invalid argument warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry the checkout with 'git checkout -f HEAD' 库在urllib3库上发出POST请求,因为它有连接池和重试等。但我不能 找到以下requests请求的替代品。

POST

这适用于import requests result = requests.post("http://myhost:8000/api/v1/edges", json={'node_id1':"VLTTKeV-ixhcGgq53", 'node_id2':"VLTTKeV-ixhcGgq51", 'type': 1 }) 库,但我无法将其转换为requests请求。 我试过了

urllib3

问题在于使用import json import urllib3 urllib3.PoolManager().request("POST","http://myhost:8000/api/v1/edges", body=json.dumps(dict(json={'node_id1':"VLTTKeV-ixhcGgq53", 'node_id2':"VLTTKeV-ixhcGgq51", 'type': 1 }))) 作为json请求中的密钥传递原始json数据。

1 个答案:

答案 0 :(得分:4)

您不需要json关键字参数;你把字典包装在那里的另一个字典中。

您还需要添加Content-Type标头,将其设置为application/json

http = urllib3.PoolManager()
data = {'node_id1': "VLTTKeV-ixhcGgq53", 'node_id2': "VLTTKeV-ixhcGgq51", 'type': 1})
r = http.request(
    "POST", "http://myhost:8000/api/v1/edges", 
    body=json.dumps(data),
    headers={'Content-Type': 'application/json'})