【问题标题】:Issue translating curl PUT to Python requests: "Problems parsing JSON"将 curl PUT 转换为 Python 请求的问题:“解析 JSON 的问题”
【发布时间】:2016-06-26 01:27:52
【问题描述】:

我希望将 Python requests 库用于 create a new file in a GitHub 存储库。在命令行中输入以下内容对我有用(酌情替换 LOGINTOKEN):

curl -X PUT -d '{"path": "testfile.txt", "message": "test", "content": "aGVsbG8y"}' https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt\?access_token\=TOKEN

但是在尝试对请求进行相同操作时,我一直遇到“解析 JSON 的问题”错误(状态代码 400):

data = {
    "message": "test",
    "content": "aGVsbG8y",
    "path": "testfile.txt"
}
url = "https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt?access_token={}".format(TOKEN)
response = requests.put(url, data=data)

关于我在做什么不同的任何提示?我已经检查了类似的问题,但没有找到正确的调整。谢谢!

【问题讨论】:

    标签: python curl github python-requests github-api


    【解决方案1】:

    因为只传递一个data 参数会自动将您的字典作为表单编码参数发送。而是将其作为 JSON 传递

    import json
    data = {
        "message": "test",
        "content": "aGVsbG8y",
        "path": "testfile.txt"
    }
    url = "https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt?access_token={}".format(TOKEN)
    response = requests.put(url, data=json.dumps(data))
    

    或者,如果您至少使用 2.4.2 版,您可以这样做:

    response = requests.put(url, json=data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2013-05-25
      • 2023-03-12
      • 2011-11-08
      • 2015-10-29
      • 2021-12-05
      相关资源
      最近更新 更多