调用UPnP操作

时间:2013-09-24 02:54:14

标签: c# .net upnp printers

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

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

谢谢!

1 个答案:

答案 0 :(得分: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">行。