Spotify 格式错误的 Json

Posted

技术标签:

【中文标题】Spotify 格式错误的 Json【英文标题】:Spotify Malformed Json 【发布时间】:2018-02-10 04:10:07 【问题描述】:

https://api.spotify.com/v1/me/player/play端点不断报错

客户端错误:PUT https://api.spotify.com/v1/me/player/play?device_id=b3be3728123923782d72b3c0b5e7e3d91b9dfb10 导致 400 Bad Request 响应: "error" : "status" : 400, "message" : "Malformed json" `

这是我的代码:

$client = new GuzzleHttp\Client();
$res = $client->request('PUT', 'https://api.spotify.com/v1/me/player/play?device_id=".$request->device_id', [
    "headers" => [
        "Authorization" =>  ["Bearer " . $session_owner->spotify_token],
        "Content-Type" => "application/x-www-form-urlencoded",
    ],
    "form_params" => [
        "uris" => ["spotify:track:" . $request->spotify_song_id]
    ]
]);

到目前为止,这是给我这个问题的唯一端点。如果我注释掉context_uri 行,那么最后一个活动设备上最后一首曲目的播放将正常开始。

这是该行的翻译:

"form_params": 
    "uris": ["spotify:track:2Hy7ypRUKL4OPqtNlzBHWM"]

【问题讨论】:

【参考方案1】:

Spotify 要求请求正文为 JSON 字符串,但您发送的是 URL 编码的表单数据。

将内容类型更改为application/json 并将form_params 更改为json

"headers" => [
    "Authorization" =>  ["Bearer " . $session_owner->spotify_token],
    "Content-Type" => "application/json",
],
"json" => [
    "context_uri" => "spotify:track:" . $request->spotify_song_id,
]

Guzzle 现在会将 JSON 作为完整的请求正文发送,不带任何表单参数。

【讨论】:

以上是关于Spotify 格式错误的 Json的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用 Spotify API 时“解析 JSON 时出错”

Spotify 获取艺术家信息 - 错误 503 服务

刷新令牌时 Spotify Web API 错误请求错误“invalid_client”

持续的 Spotify 429 错误 - 带有荒谬的重试建议 76,000 秒(约 21 小时)