紧紧抓住UPnP不返回动作

我在android中使用cling UPnP框架连接到启用UPnP的设备。 我成功地创建了一个设备并浏览网络中的可用设备。 但对于网络中的三星电视而言,该框架并没有回归任何行动。 这里我要添加RenderingControl的服务细节

 urn:schemas-upnp-org:service:RenderingControl:1 urn:upnp-org:serviceId:RenderingControl /upnp/control/RenderingControl1 /upnp/event/RenderingControl1 RenderingControl1.xml  

这是获取服务描述符xml文件的URL

 > http://:52235/dmr/SamsungMRDesc.xml 

但SCPDURL是相对的,我想知道是否正在寻找克隆框架

http://:52235/RenderingControl1.xml

代替

http://:52235/dmr/RenderingControl1.xml

这是因为UPnP中没有为服务显示任何操作的原因,还是我做了一些非常愚蠢的事情?

如何通过UPnP来正确执行此操作?

只是事先澄清一下:URL *SamsungMRDesc.xml是一个设备描述符 ,而不是你写的服务描述符 ,对吧?

每个UPnP规范的是“相对于设备描述所在的URL”。 所以,是的,正确的绝对SCPDURL是第二个。 但如果在Cling中确实存在如此严重的错误,我会非常惊讶。 所以提供一些理论:

  1. “Cling UPnP中没有显示任何动作”是什么意思? 这是一些现有的示例应用程序还是您的代码? Cling本身不提供任何GUI。 该代码可能存在错误吗?
  2. 您是否完全确定设备描述符 URL(SamsungMRDesc)? 是否可以手动访问,即只需将URL复制并粘贴到Web浏览器中即可?
  3. 如果您将SCPDURL复制并粘贴到网络浏览器中,您会看到什么? 下是否有一些节点?
  4. 您是否尝试使用英特尔开发者工具中的 DeviceSpy查询Samsung TV? 除了Cling,您还可以看到其他UPnP堆栈看到的内容。 此外,您可以右键单击“设备”节点和“服务”节点,然后查看DeviceSpy查找描述的位置。
  5. 作为最后一个例子,您可以使用Wireshark嗅探正在发送的内容。 首先将Wireshark IPfilter设置为Samsung TV的地址。

理论4和5显然要求PC连接到与电视(和您的Android)相同的网络。