【问题标题】:iTunes Lookup API response is different for different clients不同客户端的 iTunes Lookup API 响应不同
【发布时间】:2019-05-30 22:38:28
【问题描述】:

现在它看起来像个谜。请帮我解决它。

我使用 iTunes 公共 API 获取专辑:Metallica 的“Metallica”(在浏览器中查看:US region、MV region)。我构建了以下 URL 以通过 API 获取它:

  1. 美国地区https://itunes.apple.com/lookup?id=579372950&country=US&entity=album - 有效
  2. 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 对不同客户端的响应不同?我无法理解。我遗漏了哪些重要的细节?


类似问题:

  1. Spring RestTemplate getForObject URL not working for Apple iTunes - 还有另一个问题(空格字符的双重编码)。

这个问题发生在以下地区(这是一个完整的列表):

【问题讨论】:

    标签: http request itunes-store apple-music


    【解决方案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 个美国专辑作为回应。

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2023-04-10
      • 2019-10-31
      相关资源
      最近更新 更多