2017-09-01 80 views
1

https://api.spotify.com/v1/me/player/play端點不斷拋出一個錯誤Spotify的畸形的JSON

Client error: PUT https://api.spotify.com/v1/me/player/play?device_id=b3be3728123923782d72b3c0b5e7e3d91b9dfb10 resulted in a 400 Bad Request response: { "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/jsonform_paramsjson

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

狂飲現在將發送JSON作爲完整的請求主體,沒有形式PARAMS。