You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用调用Spotify API获取track时preview_url突然返回null

解决Spotify API preview_url返回null的问题

针对你遇到的Spotify API返回的preview_url和available_markets突然为null的问题,可以尝试以下几种排查和解决方法:

  • 直接测试API端点,排除代码问题
    用curl或Postman直接调用Spotify的track接口,使用和你代码中相同的access token和market参数:

    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" "https://api.spotify.com/v1/tracks/SPOTIFY_TRACK_ID?market=US"
    

    如果返回结果里preview_url依然是null,说明问题出在Spotify端(比如该曲目预览资源被移除、区域限制调整);如果返回正常,那就是你代码的参数传递或解析有问题。

  • 调整market参数的传递方式
    你代码中使用MutableMap<String, Any>传递查询参数,可能存在类型序列化的不确定性。建议直接在Retrofit接口中定义@Query参数:

    // 修改Spotify服务接口的getTrack方法
    @GET("tracks/{id}")
    fun getTrack(
        @Path("id") trackId: String,
        @Query("market") market: String,
        callback: Callback<Track?>
    )
    

    调用时直接传入market字符串即可:

    spotify.getTrack(spotifyIdTrack, market, object : Callback<Track?> {
        // 回调实现...
    })
    
  • 验证Track模型类的字段映射
    确认你的Track数据类中,preview_url和available_markets的字段映射是否正确。比如使用Gson时,要确保字段名和API返回的JSON键一致,或添加@SerializedName注解:

    data class Track(
        // 其他字段...
        @SerializedName("preview_url") val previewUrl: String?,
        @SerializedName("available_markets") val availableMarkets: List<String>?
    )
    

    之前正常但突然失效,有可能是SDK更新后模型类的映射规则发生了变化。

  • 检查access token的权限和有效性
    确认你的access token是否有效,若为用户授权的token,需确保包含user-read-public这类基础权限。可以调用https://api.spotify.com/v1/me接口验证token状态,排查是否存在权限限制。

  • 补充错误日志排查
    你代码中的failure回调无日志输出,建议添加错误信息打印:

    override fun failure(error: RetrofitError) {
        Log.e("SpotifyTrackError", "获取曲目失败: ${error.message}", error)
    }
    

    通过日志可以查看是否有HTTP错误码(如403、429)或其他异常,帮助快速定位问题。

内容的提问来源于stack exchange,提问作者Diego Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:52:24