0

在我们的 Sonos Music API 实现中,我遇到了请求专辑容器的问题。第一次请求专辑时,总是失败并显示“无法浏览音乐”消息。如果您然后按返回,并再次打开同一张专辑,它会正常打开并显示曲目列表和专辑详细信息。

我确实检查了第一个和第二个请求之间来自我们服务器的响应是否有任何差异,但没有区别。也没有任何时间差异(我的开发人员站上的请求加载(两次)都在 200 毫秒以下)。

我还使用 SoapUI 来验证 Soap 服务器是否返回了正确的数据,并且验证时没有任何错误。

测试套件也不会返回任何错误或警告。

有没有办法查看实际错误?或有关如何解决此问题的任何建议?

一个典型的请求如下所示:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Header>
      <credentials xmlns="http://www.sonos.com/Services/1.1">
         <sessionId>f42257a8-c046-11e6-82d0-d4bed9ed478a</sessionId>
         <deviceId>xx-xx-00-00-00-00:x</deviceId>
         <deviceProvider>Sonos</deviceProvider>
      </credentials>
   </s:Header>
   <s:Body>
      <getMetadata xmlns="http://www.sonos.com/Services/1.1">
         <id>album:112779295</id>
         <index>0</index>
         <count>30</count>
      </getMetadata>
   </s:Body>
</s:Envelope>

和回应:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sonos.com/Services/1.1">
   <SOAP-ENV:Body>
      <ns1:getMetadataResponse>
         <ns1:getMetadataResult>
            <ns1:index>0</ns1:index>
            <ns1:count>13</ns1:count>
            <ns1:total>13</ns1:total>
            <ns1:mediaCollection>
               <ns1:id>album:112779295</ns1:id>
               <ns1:itemType>album</ns1:itemType>
               <ns1:displayType>list</ns1:displayType>
               <ns1:title>Kenny B - Kenny B</ns1:title>
               <ns1:summary>blop</ns1:summary>
               <ns1:isFavorite>true</ns1:isFavorite>
               <ns1:language>NL</ns1:language>
               <ns1:country>NL</ns1:country>
               <ns1:genreId>genre:1</ns1:genreId>
               <ns1:genre>Nederlands</ns1:genre>
               <ns1:twitterId/>
               <ns1:liveNow>false</ns1:liveNow>
               <ns1:onDemand>true</ns1:onDemand>
               <ns1:artist>Kenny B</ns1:artist>
               <ns1:artistId>artist:1425214</ns1:artistId>
               <ns1:canScroll>true</ns1:canScroll>
               <ns1:canPlay>true</ns1:canPlay>
               <ns1:canEnumerate>true</ns1:canEnumerate>
               <ns1:canAddToFavorites>true</ns1:canAddToFavorites>
               <ns1:containsFavorite>false</ns1:containsFavorite>
               <ns1:canCache>false</ns1:canCache>
               <ns1:canSkip>false</ns1:canSkip>
               <ns1:albumArtURI>https://mobile.unplug.de/artwork.php?id=112779295&amp;w=300</ns1:albumArtURI>
               <ns1:authRequired>false</ns1:authRequired>
               <ns1:homogeneous>false</ns1:homogeneous>
               <ns1:canAddToFavorite>true</ns1:canAddToFavorite>
            </ns1:mediaCollection>
            <ns1:mediaMetadata>
               <ns1:id>track:610294458</ns1:id>
               <ns1:itemType>track</ns1:itemType>
               <ns1:displayType>List</ns1:displayType>
               <ns1:title>Alleen Jij</ns1:title>
               <ns1:mimeType>application/x-mpegURL</ns1:mimeType>
               <ns1:trackMetadata>
                  <ns1:artistId>artist:1425214</ns1:artistId>
                  <ns1:artist>Kenny B</ns1:artist>
                  <ns1:albumId>album:112779295</ns1:albumId>
                  <ns1:albumArtistId>artist:1425214</ns1:albumArtistId>
                  <ns1:duration>223</ns1:duration>
                  <ns1:rating>1</ns1:rating>
                  <ns1:albumArtURI>https://mobile.unplug.de/artwork.php?id=112779295&amp;w=300</ns1:albumArtURI>
                  <ns1:trackNumber>1</ns1:trackNumber>
                  <ns1:canPlay>true</ns1:canPlay>
                  <ns1:canSkip>true</ns1:canSkip>
                  <ns1:canAddToFavorites>true</ns1:canAddToFavorites>
               </ns1:trackMetadata>
            </ns1:mediaMetadata>
            <ns1:mediaMetadata>
               <ns1:id>track:610294459</ns1:id>
               <ns1:itemType>track</ns1:itemType>
               <ns1:displayType>List</ns1:displayType>
               <ns1:title>Als Je Gaat</ns1:title>
               <ns1:mimeType>application/x-mpegURL</ns1:mimeType>
               <ns1:trackMetadata>
                  <ns1:artistId>artist:1425214</ns1:artistId>
                  <ns1:artist>Kenny B</ns1:artist>
                  <ns1:albumId>album:112779295</ns1:albumId>
                  <ns1:albumArtistId>artist:1425214</ns1:albumArtistId>
                  <ns1:duration>191</ns1:duration>
                  <ns1:rating>1</ns1:rating>
                  <ns1:albumArtURI>https://mobile.unplug.de/artwork.php?id=112779295&amp;w=300</ns1:albumArtURI>
                  <ns1:trackNumber>2</ns1:trackNumber>
                  <ns1:canPlay>true</ns1:canPlay>
                  <ns1:canSkip>true</ns1:canSkip>
                  <ns1:canAddToFavorites>true</ns1:canAddToFavorites>
               </ns1:trackMetadata>
            </ns1:mediaMetadata>
            ...
         </ns1:getMetadataResult>
      </ns1:getMetadataResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
4

2 回答 2

0

显然,这是在响应中有 mediaCollection 时引起的。经过大量调试和尝试,我发现只需从响应中删除它即可解决。

于 2016-12-14T15:54:25.480 回答
0

我也遇到过这个问题,我不确定是什么原因造成的,但是一旦我在我的 SQL 查询末尾放置一个 LIMIT 以获取曲目,它就会停止,只要限制是 <= 99(默认数字getMetadata 帖子中 Sonos 请求的项目数)。我预计这与退回的商品数量超过 Sonos 的预期有关。

于 2017-02-22T16:06:22.587 回答