我目前正在开发新的SONOS集成。我已经构建了概述here的最小功能,并且让python测试套件通过了所有测试:
SUITE Summary: Passed. Passed: 60, Warnings: 0, Failed: 0.
我在新的SID上添加了自定义服务描述,包括服务名称,端点,轮询间隔,匿名身份验证,正确的字符串URL,音乐服务容器类型以及没有选定的功能。
我可以在我的SONOS客户端中添加我的服务,但收到消息“无法浏览音乐”。我知道可以有很多东西在玩,但有什么东西在这里跳出来吗?我的大脑疲惫不堪,我希望我错过了一些明显的东西! :)
感谢您的帮助!
编辑:
以下是一个示例“root”getMetadata请求:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:SOAPServerWSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getMetadata>
<id xsi:type="xsd:string">root</id>
<index xsi:type="xsd:integer">0</index>
<count xsi:type="xsd:integer">10</count>
<recursive xsi:type="xsd:boolean">false</recursive>
</ns1:getMetadata>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
结果:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://api-server.dev/index.php/sonos" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getMetadataResponse xmlns:ns1="urn:SOAPServerWSDL">
<getMetadataResult xsi:type="tns:metadata">
<index xsi:type="xsd:integer">0</index>
<count xsi:type="xsd:integer">2</count>
<total xsi:type="xsd:integer">2</total>
<mediaCollection xmlns="" xsi:type="tns:mediaCollection">
<id xsi:type="xsd:string">genres</id>
<title xsi:type="xsd:string">Playlists</title>
<itemType xsi:type="xsd:string">collection</itemType>
</mediaCollection>
<mediaCollection xmlns="" xsi:type="tns:mediaCollection">
<id xsi:type="xsd:string">my_playlists</id>
<title xsi:type="xsd:string">My Playlists</title>
<itemType xsi:type="xsd:string">collection</itemType>
</mediaCollection>
</getMetadataResult>
</ns1:getMetadataResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
这些以及其他函数都通过了python自检。 ¯\ _(ツ)_ /¯
答案 0 :(得分:1)
我终于在SONOS中播放了播放列表和曲目!
首先,SOAP对我来说是新的。 Haven之前没有使用它,我正在用PHP构建我们的SONOS集成。我正在使用NuSOAP库,通过它我构建了自己的WSDL文件,然后我在SOAP服务器下使用它。
相反,我现在使用API文档中提供的WSDL并使用标准的PHP SoapServer类从头开始重建我的SOAP服务器。这导致了WSDL结构和服务器响应中的一些细微变化。
如果有人在入门时遇到问题,我建议您使用SONOS&#39;自己的WSDL如下:
$server = new SoapServer(
'sonos.wsdl',
array('encoding'=>'ISO-8859-1')
);
不要忘记更新文件底部的wsdl:service值:
<soap:address location="{endpoint}"/>
我不知道的是,接近这样的解决方案有助于突出您错误命名或忽略参数或响应值的任何地方,因为SOAP服务器已经知道数据的样子(而不是依赖在你自己的自定义WSDL文件上。)
答案 1 :(得分:0)
“无法浏览音乐”通常意味着Sonos无法连接到您的服务器。如果您从音乐服务中删除了自己的帐户并尝试重新登录,那么它也不会让您失望。如果您成功通过了测试,请尝试删除并再次添加您的服务并检查所有网址。希望能帮助到你。