0

我正在尝试与网络上的 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>

这是我所能得到的,但我不知道标签是什么意思。希望在那里得到一些帮助。

谢谢!

4

1 回答 1

1

您确实是从头开始实施 UPnP 控制点 :o 。您的平台必须有可用的 UPnP 库,可以将所需的工作量减少到 1-5%。但我想你知道,所以继续……我只是想确保你明白 UPnP 不是最简单的协议,为单个应用程序实现它没有什么意义。

我将向您推荐与 SSDP 相同的文档:UDA 1.1 pdf,尤其是3.1.1 SOAP Profile. 您也可以阅读实际的 SOAP 规范,但我认为 UPnP 文档已经足够完整。UDA 定义了 SOAP 配置文件并包含几个信封示例。它还解释了包含的 HTTP POST 必须是什么样子(尤其请参阅所需的标头)。

关于你的信封(没有看过打印机规范):GetPrinterAttributes 命名空间是错误的,因为方法是在服务中定义的,而不是在设备中定义的。它也缺少初始<?xml version="1.0">行。

于 2013-09-24T08:12:47.367 回答