如何实际下载/传输使用UPnP找到的文件?

时间:2019-01-14 14:57:09

标签: streaming media upnp dlna

作为UPnP协议,我是一个全新的人,但我希望使用它将文件从Sony Camera传输到我正在使用的iOS应用程序。到目前为止,我已经有了SSDP发现设置,我可以阅读UPnP客户端的服务,搜索文件夹并访问文件名,但是我遇到的最后一个障碍是一旦列出后如何实际下载/传输文件他们!

我最终得到的是以下内容:

<item id="04_02_0624600856_000001_000001_000000" restricted="1" parentID="03_01_0624600856_000001_000000_000000">
  <dc:title>DSC05076.ARW</dc:title>
  <upnp:class>object.item.imageItem.photo</upnp:class>
  <dc:date>2018-08-23T12:24:21</dc:date>
  <res protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1">http://192.168.122.1:60151/SM_DSC05076.ARW?%2104%5f02%5f0624600856%5f000001%5f000001%5f000000%21http%2dget%3a%2a%3aimage%2fjpeg%3aDLNA%2eORG%5fPN%3dJPEG%5fSM%3bDLNA%2eORG%5fCI%3d1%21%21%21%21%21</res>
  <res protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_CI=1">http://192.168.122.1:60151/LRG_DSC05076.ARW?%2104%5f02%5f0624600856%5f000001%5f000001%5f000000%21http%2dget%3a%2a%3aimage%2fjpeg%3aDLNA%2eORG%5fPN%3dJPEG%5fLRG%3bDLNA%2eORG%5fCI%3d1%21%21%21%21%21</res>
  <res protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1">http://192.168.122.1:60151/TN_DSC05076.ARW?%2104%5f02%5f0624600856%5f000001%5f000001%5f000000%21http%2dget%3a%2a%3aimage%2fjpeg%3aDLNA%2eORG%5fPN%3dJPEG%5fTN%3bDLNA%2eORG%5fCI%3d1%21%21%21%21%21</res>

我会(凭着我对简单HTTP API的幼稚经验)然后希望能够通过单击以下命令来简单地下载有问题的文件: http://192.168.122.1:60151/SM_DSC05076.ARW或类似名称(我假设我必须稍微更改此URL,因为该文件被列为image/jpeg而不是RAW?

无论我尝试使用哪种组合来处理完整的res对象,剪掉一些位,然后对网址进行解码等。尝试访问相关网址时,我总是收到404响应。在这里我需要做些更复杂的事情吗?还是我想念的简单东西?

谢谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是我正在使用上一个会话的URL。原来,连接会话之间的URL会发生变化,这就是为什么我得到404的原因。

经验教训:UPnP具有高度的动态性,您不能依靠将图像缓存在其访问MRL下!