使用Python 3.5并请求2.18.4我需要将数据发送到另一个服务,并且由于某种原因它当前失败了。 在收到并清理来自其他服务的数据后发送,最终验证数据并将其设置为本机python dict。 这在数据被硬编码并且我没有使用传入数据(硬编码的json字符串)时有效:
def my_post_method(self, url, data):
# import requests (above)
return requests.post(
url,
data='{"keyA":"valA", "keyB":"valB" ... }',
headers={'Content-Type': 'application/json'},
) # status 200
但由于某种原因,我不能用原始数据发送它。
def my_post_method(self, url, data):
# import requests, json (above)
d = json.dumps(data)
return requests.post(
url,
data=d,
headers={'Content-Type': 'application/json'},
) # status 400
从上面 d:{"keyA":"valA", "keyB":"valB" ... }
我尝试使用请求json参数而不是数据,但是另一个服务显然期望另一端的数据参数。 这是否意味着我发布的服务正在等待json格式的字符串?
答案 0 :(得分:2)
我会在json
中使用接受Python词典的requests.post
参数,如果您使用的是至少2.4.2版的请求,则完全避免使用json.dumps
。
编辑:
我无法以任何方式重现问题,json
应该有效,这是在现代requests
发送带有帖子的json的唯一正确方法。