2017-09-01 24 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

楽しんでるが、JSON文字列であることを要求本体が必要ですが、あなたはURLエンコードされたフォームデータを送信している:

は、ここにその行が翻訳ものです。

変更jsonapplication/jsonform_paramsにコンテンツタイプ:

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

がつがつ食うが今いないフォームのparamsで完全なリクエストボディとしてJSONを送信します。

関連する問題