You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DLNA浏览群晖NAS目录?请求报-111:无效操作排查

问题:群晖NAS DLNA Browse请求返回-111: Invalid Action

背景信息

尝试通过DLNA浏览群晖DS210j NAS目录,操作流程如下:

  1. 先发送GET请求获取设备XML信息:http://192.168.1.5:50001/desc/device.xml,返回数据如下:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
    <specVersion>
        <major>1</major>
        <minor>0</minor>
    </specVersion>
    <device>
        <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
        <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMS-1.50</dlna:X_DLNADOC>
        <friendlyName>MY-NAS</friendlyName>
        <manufacturer>Synology Inc</manufacturer>
        <manufacturerURL>http://www.synology.com/</manufacturerURL>
        <modelDescription>Synology DLNA/UPnP Media Server</modelDescription>
        <modelName>DS210j</modelName>
        <modelURL>http://www.synology.com/</modelURL>
        <serialNumber>A2G6N03829</serialNumber>
        <UDN>uuid:00113206-3dd5-0011-d53d-d53d01234567</UDN>
        <presentationURL>http://192.168.1.5:5000/</presentationURL>
        <iconList>
            <icon>
                <mimetype>image/jpeg</mimetype>
                <width>120</width>
                <height>120</height>
                <depth>24</depth>
                <url>/tmp_icon/dmsicon120.jpg</url>
            </icon>
            <!-- 3 more icons here -->
        </iconList>
        <serviceList>
            <service>
                <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
                <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
                <SCPDURL>/connmgrSCPD.xml</SCPDURL>
                <controlURL>/ConnectionManager/control</controlURL>
                <eventSubURL>/ConnectionManager/event</eventSubURL>
            </service>
            <service>
                <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
                <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
                <SCPDURL>/cdsSCPD.xml</SCPDURL>
                <controlURL>/ContentDirectory/control</controlURL>
                <eventSubURL>/ContentDirectory/event</eventSubURL>
            </service>
            <service>
                <serviceType>urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1</serviceType>
                <serviceId>urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar</serviceId>
                <SCPDURL>/msrrSCPD.xml</SCPDURL>
                <eventSubURL>/MediaReceiverRegistrar/event</eventSubURL>
                <controlURL>/MediaReceiverRegistrar/control</controlURL>
            </service>
        </serviceList>
    </device>
</root>
  1. 执行以下curl请求尝试浏览根目录:
curl --location 'http://192.168.1.5:50001/ContentDirectory/control' \
--header 'SOAPAction: urn:schemas-upnp-org:service:ContentDirectory:1#Browse' \
--header 'Content-Type: text/xml; charset="utf-8"' \
--data '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ObjectID>0</ObjectID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>*</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1000</RequestedCount>
            <SortCriteria></SortCriteria>
        </u:Browse>
    </s:Body>
</s:Envelope>'

但返回错误:-111: Invalid Action。尝试移除SOAPAction中的#Browse或仅发送#Browse,问题依旧。服务器环境为Linux/2.6.32.12, UPnP/1.0, Portable SDK for UPnP devices/1.6.18。

问题原因

  1. SOAPAction格式不符合UPnP 1.0规范:UPnP 1.0要求SOAPAction的值必须用双引号包裹,原请求未添加引号,导致PUPnP 1.6.18 SDK无法正确解析动作。
  2. SOAP编码风格不兼容:原请求使用了SOAP编码风格(s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"),但群晖DLNA服务器仅支持文档字面量风格,不支持编码风格,导致动作解析失败。
  3. Content-Type参数冗余:charset值多余的双引号可能引发解析异常。

解决方法

修正后的curl请求

curl --location 'http://192.168.1.5:50001/ContentDirectory/control' \
--header 'SOAPAction: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ObjectID>0</ObjectID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>*</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1000</RequestedCount>
            <SortCriteria></SortCriteria>
        </u:Browse>
    </s:Body>
</s:Envelope>'

关键修改点

  • SOAPAction添加双引号:给完整URN加上双引号,严格匹配UPnP 1.0规范。
  • 移除encodingStyle属性:删除SOAP Envelope中的编码风格声明,改用服务器支持的文档字面量风格。
  • 简化Content-Type:去掉charset值的双引号,避免解析歧义。

额外验证步骤:可以先请求http://192.168.1.5:50001/cdsSCPD.xml获取ContentDirectory服务的SCPD文档,确认Browse动作的定义和参数要求,确保请求参数完全匹配。

内容的提问来源于stack exchange,提问作者LA_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:42:08