调用的UPnP动作(Invoking UPnP actions)

2019-10-18 16:13发布

我试图用我的网络上的UPnP打印机交互。 我可以找到打印机,就可以得到可用的服务,甚至得到了一个服务提供操作的列表。 然而,这就是我卡住了。

例如,有一个动作GetPrinterAttributes ,我知道我需要创建一个HTTP POST发送请求信封的动作,但我不知道是什么样子。 我希望有人能帮助我指向的文件或任何东西让我再次去。

根据其它实例,我试图创建请求有效负载如下:

<s:Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:GetPrinterAttributes xmlns:u="urn.schemas-upnp-org:device:Printer:1">
        </u:GetPrinterAttributes>
    </s:Body>
</s:Envelope>

这是据我可以得到的,但我不知道这些标签含义。 希望一些帮助那里。

谢谢!

Answer 1:

你真的是从头开始实现UPnP控制点:○。 必须有你的平台,将削减需要,也许1-5%的工作量使用UPnP的图书馆。 但我猜你知道这样继续...我只是想确保你明白,UPnP是不是最简单的协议,并实现它的单个应用程序变得毫无意义。

我只是把你介绍给同一文档和我一样的SSDP: UDA 1.1 PDF格式 ,尤其是3.1.1 SOAP Profile 。 你可以读到实际的SOAP规范为好,但我认为UPnP的文档是完全够用。 该UDA定义SOAP轮廓和包含几个信封例子。 这也解释了包含HTTP POST必须是什么样子(见特别需要的标题)。

关于您的信封(没有见过的打印机规格):GetPrinterAttributes命名空间是错误的,方法是在服务,而不是设备定义。 它也缺少起始<?xml version="1.0">线。



文章来源: Invoking UPnP actions