2013-09-24 2 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. 어쩌면 1-5 % 정도의 작업량을 줄일 수있는 플랫폼에 사용할 수있는 UPnP 라이브러리가 있어야합니다. 그러나 나는 당신이 알고있는 것 같아요. 계속해 ... 나는 단지 당신이 UPnP가 가장 단순한 프로토콜이 아니며 하나의 어플리케이션을 위해 그것을 구현하는 것이 이해가되지 않는다는 것을 확실히하고 싶었습니다.

SSDP에 대해 수행 한 것과 동일한 문서를 참조하겠습니다 : UDA 1.1 pdf, 특히 3.1.1 SOAP Profile. 실제 SOAP 스펙을 읽을 수도 있지만 UPnP 문서가 충분히 완벽하다고 생각합니다. UDA는 SOAP 프로파일을 정의하며 여러 봉투 예제를 포함합니다. 또한 HTTP POST가 포함되어야하는 내용을 설명합니다 (특히 필수 헤더 참조).

봉투에 대해 (Printer 사양을 보지 않고) GetPrinterAttributes 네임 스페이스는 서비스가 아니라 장치에 정의 된대로 잘못되었습니다. 초기 <?xml version="1.0"> 행이 누락되었습니다.

+0

내가 찾던 의사와 같은 모양입니다. 감사합니다! 이제 뒤로 물러서서 독서를 해보겠습니다. – earthling

+1

그것이 끝난 이유는 문서에 명시된 바와 같이 큰 따옴표로 된'SOAPACTION' 헤더의 값을 가지고 있지 않다는 것입니다. 'GetPrinterAttributes'를위한'IN' 매개 변수가 없었기 때문에 다른 모든 것들이 꽤 옳았습니다. 나는 심지어 그것을 신체 꼬리표에서 버릴 수 있었다. – earthling