我正在尝试使用请求来运行一个简单的PUT并将新的对添加到etcd(我已经在本地运行)。我可以这样直接调用etcd来做到这一点:
curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Test Message"
但是,我认为与之等效的以下代码似乎不起作用:
import requests
r = requests.put('http://127.0.0.1:2379/v2/keys/message', data = 'value=\"Test Message\"')
print(r.content)
上面的打印语句向我展示了这一点:
b'{"action":"create","node":{"key":"/message/35","value":"","modifiedIndex":35,"createdIndex":35}}\n'
因此出于某种原因, value 的值似乎为空。我为 data 参数尝试了多种格式,但没有任何运气。
答案 0 :(得分:1)
首先,您可以通过r
从r.request
获取发送的请求。然后您可以看到问题所在:
>>> r = requests.put("http://www.example.com", data="value=\"Test Message\"")
>>> r.request
<PreparedRequest [PUT]>
>>> r.request.url
'http://www.example.com/'
>>> r.request.body
'value="Test Message"'
>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '20'}
第二,我认为您应该使用r = requests.put('http://127.0.0.1:2379/v2/keys/message', data={"value": "Test Message"})