Python - Spotify API 返回错误 400“格式错误的 JSON”

Posted

技术标签:

【中文标题】Python - Spotify API 返回错误 400“格式错误的 JSON”【英文标题】:Python - Spotify API returning Error 400 "Malformed JSON" 【发布时间】:2020-02-19 09:29:56 【问题描述】:

嘿嘿。我正在尝试在业余时间制作一个使用 Spotify API 的小型应用程序。我已经设法让我的程序使用 oAuth 2 让用户授权我的应用程序来操作他们的 Spotify,但是我在 Spotify API 上的某个端点遇到了问题。

我遇到问题的端点是https://api.spotify.com/v1/me/player/play(这里是端点https://developer.spotify.com/console/put-play/ 的文档链接)。每当我尝试向端点发出 put 请求时,我都会收到带有消息“Malformed json”的 400 状态代码,即使我从文档中复制/粘贴自己的 json,我也会收到此消息,所以我认为这不是问题关于我如何格式化我的 json,除了我之前使用过 json 来调用其他端点并且他们对我在这些调用上的格式化没有问题。

这是我的代码:

headers = "Authorization":"Bearer ".format(access_token)

url = 'https://api.spotify.com/v1/me/player/play'
payload = "context_uri": "spotify:album:5ht7ItJgpBH7W6vJ5BqpPr"
r = requests.put(url, headers=headers, data=payload)
print(r)
print(r.text)

澄清一下,access_token 是我从他们的授权过程中获得的访问令牌,我正在使用 python-requests 来发出 http 请求(这是相关的文档:https://requests.kennethreitz.org/en/master/)

我想知道问题是否是由于 Spotify 在其轨道 ID 中使用冒号并且 JSON 中也使用了冒号这一事实?我在这里的另一个帖子中看到我应该尝试将"Content-Type":"application/json" 添加到我的标题中,但这根本没有改变结果。

非常感谢任何帮助,如果您需要更多信息,请告诉我。谢谢!

【问题讨论】:

试试这个:r = requests.put(url, headers=headers, json=payload) 我已将其添加为答案,如果它解决了您的问题,请选择它作为正确答案。谢谢 【参考方案1】:

如果您的有效负载是 dict,请在 requests 库中使用 json kwargs。 data 适用于字符串有效负载。给你:

r = requests.put(url, headers=headers, json=payload)

【讨论】:

以上是关于Python - Spotify API 返回错误 400“格式错误的 JSON”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 进行 Spotify API 身份验证

Spotify API 授权代码流向我返回 400 错误请求

Spotify API 创建播放列表返回 错误: 状态:400,消息:'解析 JSON 时出错。'

(Spotify Web API)创建新播放列表 - POST 请求返回“错误 403(禁止)”

Python 提出请求。 Spotify API 提出请求格式错误的 Json

Spotify API 授权代码流返回“unsupported_grant_type”错误