Как я могу на самом деле скачать / передать файл, найденный с помощью UPnP?
Я совершенно новичок в 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-адреса и т. д. Я всегда получаю ответ 404 при попытке посетить указанный URL. Есть ли что-то более сложное, что мне нужно сделать здесь? Или что-то простое, что мне не хватает?
Заранее спасибо!
1 ответ
Проблема заключалась в том, что я использовал URL из предыдущего сеанса. Оказывается, что URL-адреса меняются между сеансами соединения, поэтому я получил 404.
Извлеченный урок: UPnP очень динамичен, и вы не можете полагаться на кэширование изображений под их доступом MRL!