【发布时间】:2018-02-09 20:11:44
【问题描述】:
使用 Python 3.5 和 requests 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" ... }
我尝试使用 requests json 参数而不是数据,但其他服务显然期望另一端的数据参数。 这是否意味着我发布的服务正在等待 json 格式的字符串?
【问题讨论】:
-
我们可以知道其他服务吗?我们可以尝试公开的东西吗?
-
您是否尝试过再次使用硬编码字符串进行 POST?服务是否有可能返回 400 秒,因为它不希望您两次发出相同的请求?
-
感谢@Rob Watts,但我在下面回答了-出于某种奇怪的原因,在接收端验证传入数据时考虑了键值的顺序。我真的不知道为什么......
-
@camelBack 我遇到了类似的问题,发现在有效负载上运行了两次转储。第二个转储转义了第一个转储 json 字符串中的所有双引号。
标签: python json python-requests