【发布时间】:2022-01-21 23:00:41
【问题描述】:
亲爱的, 我正在使用以下代码查询 Spotify API
public Spotify_Search_Result Search(string artist_name, string song_name, int limit=1) {
Spotify_Search_Result result = new Spotify_Search_Result();
string text = artist_name + "%20" + song_name;
//string text = artist_name + "+" + song_name;
//string text = artist_name + " " + song_name;
//string text = Uri.EscapeDataString(artist_name) + " " + Uri.EscapeDataString(song_name);
//string text = Uri.EscapeDataString(artist_name) + "%20" + Uri.EscapeDataString(song_name);
//string text = Uri.EscapeDataString(artist_name) + "+" + Uri.EscapeDataString(song_name);
string url = "https://api.spotify.com/v1/search";
string query = url +
"?q="+
text+
"&type=track"+
"&offset=0"+
"&limit="+
limit.ToString();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(query);
webRequest.Method = "GET";
webRequest.ContentType = "application/json";
webRequest.Accept = "application/json";
webRequest.Headers.Add("Authorization", "Bearer " + access_token);
String json = null;
try
{
HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
using (Stream respStr = resp.GetResponseStream())
{
using (StreamReader rdr = new StreamReader(respStr, Encoding.UTF8))
{
//should get back a string i can then turn to json and parse for accesstoken
json = rdr.ReadToEnd();
rdr.Close();
}
}
}
catch (Exception ex) {
Console.WriteLine("Spotify search result error: " + ex.Message + " ["+artist_name+"]-["+song_name+"]" );
}
if (json != null)
{
result = JsonConvert.DeserializeObject<Spotify_Search_Result>(json);
}
return result;
}
问题:对于某些艺术家名称和歌曲名称的值,此代码不返回匹配项。 示例:艺术家姓名=Delta V song_name=Il primo giorno del mondo
可变 json 值将是: { “轨道”:{ "href" : "https://api.spotify.com/v1/search?query=Delta+V+Il+Primo+Giorno+Del+Mondo&type=track&offset=0&limit=20", “项目” : [ ], “限制”:20, “下一个”:空, “偏移”:0, “上一个”:空, “总计”:0 } }
如果我在 SpotifyForDevelopers 控制台中输入相同的艺术家名称和歌曲名称,我会得到很好的匹配。
现在...问题出在哪里?我认为这是我格式化“文本”并将其传递给 API 的方式。我不知道。 正如您从代码中看到的那样,我尝试了不同的格式化“文本”变量的方法。 关于我做错了什么的任何提示?
谢谢!
【问题讨论】: