【问题标题】:Format python PATCH request from curl command从 curl 命令格式化 python PATCH 请求
【发布时间】:2020-07-13 20:05:12
【问题描述】:

我有一个 curl 命令,我可以在本地机器上运行它,但将它转移到 python 脚本给我带来了困难。这是有效的 curl 命令:

curl -X PATCH "http://localhost:9999/pins/1" -H "Content-Type: application/json" -d "{"state": "on"}"

这就是我到目前为止的 python 请求:

import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, payload, headers=head)

但我收到了 400 响应。有什么方向吗?

另外,如果我将其格式化为

r = requests.patch(url, data=payload)

我收到 500 响应代码。还应该注意:我可以通过运行类似的东西轻松运行简单的获取请求

r = requests.get(url)

【问题讨论】:

  • 把这个r = requests.patch(url, data=payload)改成r = requests.patch(url, json=payload)
  • ^ 成功了,非常感谢!
  • 我已经发布了一个答案,以便任何登陆的人都会看到答案而不是 cmets

标签: python curl python-requests


【解决方案1】:
import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, json=payload)

将此r = requests.patch(url, data=payload) 更改为r = requests.patch(url, json=payload)

【讨论】:

    【解决方案2】:

    尝试以下操作以确保您的有效负载是有效的 json。

    import requests
    import json
    
    url = 'http://localhost:9999/pins/1'
    payload = {'state':'on'}
    head = {'Content-Type':'application/json'}
    
    r = requests.patch(url, data=json.dumps(payload), headers=head)
    

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 2019-07-07
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多