Eli*_*ICA 5 python http-post python-requests
似乎当一个键data的值为None,键不包含在请求中.
>>> req = requests.Request('POST', 'http://google.com', data=dict(a=None, b=1))
>>> req.prepare().body
'b=1'
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我期待一个空字符串,或类似于渲染的json.dumps(d)地方.我确信这是一个很好的理由 - 只是好奇它是什么.(我能想到的一件事是,可能没有POST请求的编码或可用 - 这是真的吗?)NonenullnullNone
另外好奇 - 为什么requests默默地忽略这些数据而不是抛出错误?
小智 6
我有类似的空白值问题,这是我的解决方法。我将数据作为 json 字符串发送,并将内容类型标头设置为 application/json。这似乎按预期发送了整个数据。花了相当长的时间才弄清楚。希望这对某人有帮助。
import requests
import json
header = {"Content-Type":"application/json"}
data = {
"xxx": None,
"yyy": "http://",
"zzz": 12345
}
res = requests.post('https://httpbin.org/post',
data=json.dumps(data), headers=header)
obj = json.loads(res.text)
print obj['json']
Run Code Online (Sandbox Code Playgroud)