2013-09-24 3 views
0

Я пытаюсь взаимодействовать с принтером UPnP в своей сети. Я могу открыть принтер, получить на нем доступные сервисы и даже получить список доступных действий для службы. Тем не менее, здесь я застрял.Вызов действий 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

Вы действительно используете контрольную точку 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">.

+0

Это похоже на документ, который я искал, спасибо! Теперь, чтобы отбросить назад и сделать некоторые чтения ... – earthling

+1

Что это значит, так это то, что у меня не было значения для заголовка SOAPACTION в двойных кавычках, как указано в документе. Все остальное было довольно правильным, поскольку для 'GetPrinterAttributes' не было параметров' IN'. Я даже мог оставить это из тега тела. – earthling

Смежные вопросы