在 python 中发送 post 到 spotify api 的请求时出现问题

Problem sending post requests to spotify api in python

def queue_song(session_id):
    song_uri='spotify:track:5RwV8BvLfX5injfqYodke9'
    tokens = get_user_tokens(session_id)
    headers = {'Content-Type': 'application/json',
               'Authorization': "Bearer " + tokens.access_token,
               }
    url = BASE_URL +'player/queue'
    data={
        'uri':song_uri
    }
    response = requests.post(url,headers=headers,data=data).json()
    print(response)

输出:

{'error': {'status': 400, 'message': 'Required parameter uri missing'}}

https://developer.spotify.com/documentation/web-api/reference/#/operations/add-to-queue

I dont thing there is any problem with auth tokens... coz 'GET' requests are working fine

默认情况下,在 requests.post() 中使用 data= 会将内容类型设置为 application/x-www-form-urlencoded,这使得 body 类似于 HTTP 表单请求。

Spotify 的 API 基于 JSON,因此您的数据需要是有效的 json 数据。

您可以通过两种方式完成:

response = requests.post(url,headers=headers,data=json.dumps(data)).json()

或者,更简单地说:

response = requests.post(url,headers=headers,json=data).json()

这样您就不需要手动设置 application/json header。

编辑: 在查看了您链接的 API 文档后,您所做的调用有更多错误。

您正在 data 中发送参数 - 这是请求的 body。但是 Spotify API 指定了需要放在 Query 中的参数,即 URI 的查询字符串。这意味着您的请求应该是:

response = requests.post(url,headers=headers,params=data).json()  # set query string not body