我正在尝试与网络上的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>
这是我能得到的,但我不知道标签是什么意思。希望在那里得到一些帮助。
谢谢!
答案 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">
行。