不同客户端的 iTunes Lookup API 响应不同
Posted
技术标签:
【中文标题】不同客户端的 iTunes Lookup API 响应不同【英文标题】:iTunes Lookup API response is different for different clients 【发布时间】:2019-05-30 22:38:28 【问题描述】:现在它看起来像个谜。请帮我解决它。
我使用 iTunes 公共 API 获取专辑:Metallica 的“Metallica”(在浏览器中查看:US region、MV region)。我构建了以下 URL 以通过 API 获取它:
-
美国地区https://itunes.apple.com/lookup?id=579372950&country=US&entity=album - 有效
MV 区域https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album - 不起作用
这是我观察到的实际行为:
如果我在 Spring 应用程序中查询 GET https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album
(使用 RestTemplate
+ Jackson HttpMessageConverter
),我得到一个空响应:
"resultCount":0,
"results": []
如果我在浏览器中导航到https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album,我会收到文件下载提示。该文件包含一个空响应:
"resultCount":0,
"results": []
如果我使用 HttpPie http get https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album
查询 API,我会得到一个非空响应!!!
"resultCount": 1,
"results": [
"amgArtistId": 4906,
"artistId": 3996865,
"artistName": "Metallica",
"artistViewUrl": "https://music.apple.com/us/artist/metallica/3996865?uo=4",
"artworkUrl100": "https://is1-ssl.mzstatic.com/image/thumb/Music/v4/0b/9c/d2/0b9cd2e7-6e76-8912-0357-14780cc2616a/source/100x100bb.jpg",
"artworkUrl60": "https://is1-ssl.mzstatic.com/image/thumb/Music/v4/0b/9c/d2/0b9cd2e7-6e76-8912-0357-14780cc2616a/source/60x60bb.jpg",
"collectionCensoredName": "Metallica",
"collectionExplicitness": "notExplicit",
"collectionId": 579372950,
"collectionName": "Metallica",
"collectionPrice": 9.99,
"collectionType": "Album",
"collectionViewUrl": "https://music.apple.com/us/album/metallica/579372950?uo=4",
"copyright": "℗ 1991 Blackened Recordings",
"country": "USA",
"currency": "USD",
"primaryGenreName": "Metal",
"releaseDate": "1991-08-12T07:00:00Z",
"trackCount": 13,
"wrapperType": "collection"
]
我尝试了多次,结果似乎是一致的。我比较了请求,它们似乎是相同的。
为什么 iTunes 对不同客户端的响应不同?我无法理解。我遗漏了哪些重要的细节?
类似问题:
-
Spring RestTemplate getForObject URL not working for Apple iTunes - 还有另一个问题(空格字符的双重编码)。
这个问题发生在以下地区(这是一个完整的列表):
李https://itunes.apple.com/lookup?id=579372950&country=LI&entity=album MV https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album MMhttps://itunes.apple.com/lookup?id=579372950&country=MM&entity=album ET https://itunes.apple.com/lookup?id=579372950&country=ET&entity=album RShttps://itunes.apple.com/lookup?id=579372950&country=RS&entity=album【问题讨论】:
【参考方案1】:我发现了不同之处:
http get 'https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album'
-> 空响应
curl 'https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album'
-> 空响应
http get https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album
-> 1 张专辑回应
curl https://itunes.apple.com/lookup?id=579372950&country=MV&entity=album
-> 1 张专辑回应
如果我不在 URL 周围使用引号,请求将被解释为 GET https://itunes.apple.com/lookup?id=579372950
。默认国家是美国,因此我看到 1 个美国专辑作为回应。
【讨论】:
以上是关于不同客户端的 iTunes Lookup API 响应不同的主要内容,如果未能解决你的问题,请参考以下文章