Как я могу на самом деле скачать / передать файл, найденный с помощью UPnP? - PullRequest
0 голосов
/ 14 января 2019

Я совершенно новичок в UPnP в качестве протокола, но я надеюсь использовать его для передачи файлов с камеры Sony в приложение для 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>

Тогда я бы (с моим наивным опытом простых API-интерфейсов HTTP) просто мог загрузить рассматриваемый файл, нажав: http://192.168.122.1:60151/SM_DSC05076.ARW или аналогичный (я предполагаю, что мне нужно немного изменить этот URL, поскольку файл указан как image/jpeg, а не RAW?

Какую бы комбинацию я не использовал для полного res объекта, отрывая биты, декодируя URL-адрес e.t.c. Я всегда получаю ответ 404 при попытке посетить данный URL. Есть ли что-то более сложное, что мне нужно сделать здесь? Или что-то простое, что мне не хватает?

Заранее спасибо!

1 Ответ

0 голосов
/ 14 января 2019

Проблема заключалась в том, что я использовал URL из предыдущего сеанса. Оказывается, что URL меняются между сеансами соединения, поэтому я получаю 404.

Извлеченный урок: UPnP очень динамичен, и вы не можете полагаться на кэширование изображений под их доступом MRL!

...