【问题标题】:Python request.post gives 500 responsePython request.post 给出 500 响应
【发布时间】:2017-11-07 14:48:32
【问题描述】:

对于我的一个发布请求,我每次尝试运行它时都会收到 500 响应。当我在邮递员中复制并粘贴详细信息时,每次都可以正常工作。 python 帖子适用于我运行的其他请求,但这个每次都失败,我不知道为什么。

以前有没有人遇到过这个问题,或者任何人都可以看到我做错了什么?

json_body = '{"overrides": [], "id": 0, "name": "Rate Sheet 12", "resellerId": 2000001, "currency": "ZAR", "markup": {"id": 0, "method": "Percentage", "operand": 3}, "totalLinkedBands": 0, "totalLinkedAccounts": 0}'
token = 'JWT eyJ0eXA...s'
url = 'http://app01:8084//PriceScheme/CreatePriceScheme'
r = requests.post(url, json.loads(json_body), headers={'Authorization': token})

在 Postman 中如下所示:

(POST) http://app01:8084//PriceScheme/CreatePriceScheme
Content-Type - application/json
Authorization - JWT eyJ...

{"overrides": [], "name": "Rate Sheet 1", "currency": "ZAR", "totalLinkedAccounts": 0, "totalLinkedBands": 1, "id": 1, "markup": {"method": "Percentage", "operand": 3.0, "id": 0}, "resellerId": "2009340"}

【问题讨论】:

  • 在您的问题中包含邮递员代码
  • 出于兴趣 - 端口号后面的双“/”。是不是打错字了?
  • 500 是内部服务器错误。您为 Python 和 Postman 提供的示例没有相同的有效负载(例如 id 不一样),这可能是一个工作而另一个不工作的原因。请使用完全相同的请求对其进行测试并更新问题。此外,如果您有权访问网络服务器日志,您应该会看到出了什么问题,因为这是一个内部服务器错误。
  • 在一种情况下,“操作数”是 3.0,在另一种情况下,可能是服务器端解析问题?
  • postman 的工作方式与request.post 不同,postman 处理负载的方式与 API 命中之前的request 不同。通过request 传递时,将json_body 分配为纯json 而不是单引号。这将由于解析问题而发生。此外,在您的 API 中,添加 pdb 并检查调用是否到达 view 或者它在 apache / nginx 级别本身中断!

标签: python json rest


【解决方案1】:

json_body='{"parametername":Value}' resp = requests.post(URL, json_body, auth=('username', 'Pass'))

解决了我的问题

【讨论】:

    【解决方案2】:

    试一试

    requests.post(url, json = json_body, headers={'Authorization': token})
    

    在 Postman 中,自动使用 Content-Type - application/json

    如果使用request post json data ,应该使用json=data

    【讨论】:

    • 我遇到了类似的问题,使用 "json = json_body" 解决了这个问题。
    • 您能否尝试扩展您的答案,这可能会帮助 OP 和其他人确定真正的解决方案。
    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2017-03-27
    • 2015-08-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多