通过官网的例子来学习ws-discovery

这篇具有很好参考价值的文章主要介绍了通过官网的例子来学习ws-discovery。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ws-discovery该例子来自于ws-discovery.pdf,连接如下,表1和表2是对该例子的解释进行翻译,表3个是一个onvif的搜索响应

WS-Discovery (xmlsoap.org)

ProbeMatches 消息 - Win32 apps | Microsoft Learn(microsoft的中文文档)

(01) <s:Envelope 
(02) xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
(03) xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" 
(04) xmlns:i="http://printer.example.org/2003/imaging" 
(05) xmlns:s="http://www.w3.org/2003/05/soap-envelope" > 
(06) <s:Header> 
(07) <a:Action> 
(08) http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe 
(09) </a:Action> 
(10) <a:MessageID> 
(11) uuid:0a6dc791-2be6-4991-9af1-454778a1917a 
(12) </a:MessageID> 
(13) <a:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To> 
(14) </s:Header> 
(15) <s:Body> 
(16) <d:Probe> 
(17) <d:Types>i:PrintBasic</d:Types> 
(18) <d:Scopes 
(19) MatchBy="http://schemas.xmlsoap.org/ws/2005/04/discovery/ldap" > 
(20) ldap:///ou=engineering,o=examplecom,c=us 
(21) </d:Scopes> 
(22) </d:Probe> 
(23) </s:Body> 
(24) </s:Envelope> 

上表的7到9行表明这是一个Probe(嗅探),13行表明该消息发送到一个众所周知的地址(well-known)[RFC2141] (RFC2141是urn的语法说明,urn的意思是“统一资源名称”。

在ws-discovery文档的5.2节中特别有说明,当我们是发送给目标服务而不是代理时必须是:

urn:schemas-xmlsoap-org:ws:2005:04:discovery)。

因为在Header块里没有ReplyTo字段,那么任何对该Probe消息的响应都应该通过UDP发送到该soap消息头部说明的源ip和端口上[SOAP/UDP](SOAP-over-UDP的文档).

17到21行指明了Probe的两个限制,17行限制了响应是实现了基本打印服务的类别,18到21行在工程范畴上对其做了限制。只有当目标服务同时满足这两个限制时,才需要对该Probe做出响应。

虽然这个例子中同时包含了这两个限制,但是实际使用中一个Probe并不要求同时包含他们。

下面的表2是对表1的响应。

(01) <s:Envelope 
(02) xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
(03) xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" 
(04) xmlns:i="http://printer.example.org/2003/imaging" 
(05) xmlns:s="http://www.w3.org/2003/05/soap-envelope" > 
(06) <s:Header> 
(07) <a:Action> 
(08) http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches 
(09) </a:Action> 
(10) <a:MessageID> 
(11) uuid:e32e6863-ea5e-4ee4-997e-69539d1ff2cc 
(12) </a:MessageID> 
(13) <a:RelatesTo> 
(14) uuid:0a6dc791-2be6-4991-9af1-454778a1917a 
(15) </a:RelatesTo> 
(16) <a:To> 
(17) http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous 
(18) </a:To> 
(19) <d:AppSequence InstanceId="1077004800" MessageNumber="2" /> 
(20) </s:Header> 

(21) <s:Body> 
(22) <d:ProbeMatches> 
(23) <d:ProbeMatch> 
(24) <a:EndpointReference> 
(25) <a:Address> 
(26) uuid:98190dc2-0890-4ef8-ac9a-5940995e6119 
(27) </a:Address> 
(28) </a:EndpointReference> 
(29) <d:Types>i:PrintBasic i:PrintAdvanced</d:Types> 
(30) <d:Scopes> 
(31) ldap:///ou=engineering,o=examplecom,c=us 
(32) ldap:///ou=floor1,ou=b42,ou=anytown,o=examplecom,c=us 
(33) http://itdept/imaging/deployment/2004-12-04 
(34) </d:Scopes> 
(35) <d:XAddrs>http://prn-example/PRN42/b42-1668-a</d:XAddrs> 
(36) <d:MetadataVersion>75965</d:MetadataVersion> 
(37) </d:ProbeMatch> 
(38) </d:ProbeMatches> 
(39) </s:Body> 
(40) </s:Envelope> 

7到9行表明这是一个Probe(嗅探),

13到15行表明是一个对表1的Probe的响应。因为表1的Probe没有ReplyTo头块,

16到18行说明响应该通过UDP发送到Probe的soap消息头部说明的源ip和端口上。(文档5.3节)

19行包含实例标识符和编号。此信息让接收方能对从目标服务接收的发现消息重新排序(因为可能是udp的)。

23到37描述了一个单个目标服务。

24到28描述了。。。

29说明了目标服务实现的类别(Types),在本例中,是与Probe匹配的基本打印类型以及额外的一个高级打印类型。

30到34行列出了3个范畴(scopes)。一个匹配Probe的31行,一个说明了其地理定位信息,一个说明其部署的有用信息(IT部门什么什么的)。在这个例子中,scope是可能是和部署相关的信息集合。

35行表明目标服务可达的地址,在这里是一个http地址。XAddr 验证规则 - Win32 apps | Microsoft Learn

36行是目标服务的版本信息,如果metadata(29行到34行)有变动,版本号递增。

ONVIF Core Specification

请看7.3节 Discovery definitions ,7.3.2.1节指出有通行的types定义

tds:Device

ONVIF Network Video Transmitter Device Definition

该文档里有NVT(Network Video Transmitter)的定义说明,该文档里说明了types和scops可填写的值(5.2和5.21节)。5.21节指出为了向后兼容,NVT除了tds:Device应有dn:NetworkVideoTransmitter文章来源地址https://www.toymoban.com/news/detail-514309.html

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
    xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:wsdd="http://schemas.xmlsoap.org/ws/2005/04/discovery"
    xmlns:chan="http://schemas.microsoft.com/ws/2005/02/duplex"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    xmlns:wsa5="http://www.w3.org/2005/08/addressing"
    xmlns:xmime="http://tempuri.org/xmime.xsd"
    xmlns:xop="http://www.w3.org/2004/08/xop/include"
    xmlns:wsrfbf="http://docs.oasis-open.org/wsrf/bf-2"
    xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
    xmlns:wsrfr="http://docs.oasis-open.org/wsrf/r-2"
    xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
    xmlns:tt="http://www.onvif.org/ver10/schema"
    xmlns:ter="http://www.onvif.org/ver10/error"
    xmlns:tns1="http://www.onvif.org/ver10/topics"
    xmlns:tds="http://www.onvif.org/ver10/device/wsdl"
    xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl"
    xmlns:trt="http://www.onvif.org/ver10/media/wsdl"
    xmlns:tev="http://www.onvif.org/ver10/events/wsdl"
    xmlns:tdn="http://www.onvif.org/ver10/network/wsdl"
    xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl"
    xmlns:trp="http://www.onvif.org/ver10/replay/wsdl"
    xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl"
    xmlns:tr2="http://www.onvif.org/ver20/media/wsdl"
    xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl"
    xmlns:hikwsd="http://www.onvifext.com/onvif/ext/ver10/wsdl"
    xmlns:hikxsd="http://www.onvifext.com/onvif/ext/ver10/schema">
    <SOAP-ENV:Header>
        <wsa:MessageID>urn:uuid:b51f555f-07a0-4853-915d-0ff352bfdcd6</wsa:MessageID>
        <wsa:RelatesTo>urn:uuid:b51f555f-07a0-4853-915d-0ff352bfdcd6</wsa:RelatesTo>
        <wsa:To SOAP-ENV:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To>
        <wsa:Action SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches</wsa:Action>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <wsdd:ProbeMatches>
            <wsdd:ProbeMatch>
                <wsa:EndpointReference>
                    <wsa:Address>uuid:3fa1fe68-b915-4053-a3e1-ec6073dcb966</wsa:Address>
                    <wsa:ReferenceProperties></wsa:ReferenceProperties>
                    <wsa:PortType>ttl</wsa:PortType>
                </wsa:EndpointReference>
                <wsdd:Types>tdn:NetworkVideoTransmitter</wsdd:Types>
                <wsdd:Scopes>onvif://www.onvif.org/name/TP-IPC onvif://www.onvif.org/hardware/MODEL onvif://www.onvif.org/Profile/Streaming onvif://www.onvif.org/location/ShenZhen onvif://www.onvif.org/type/NetworkVideoTransmitter</wsdd:Scopes>
                <wsdd:XAddrs>http://192.168.3.86:2020/onvif/device_service</wsdd:XAddrs>
                <wsdd:MetadataVersion>1</wsdd:MetadataVersion>
            </wsdd:ProbeMatch>
        </wsdd:ProbeMatches>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

到了这里,关于通过官网的例子来学习ws-discovery的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ant-Design 官方网站总是打不开,那么我们则需要使用以下该官网的镜像地址来打开;

      1、 Ant-Design 官网原地址: https://ant.design/index-cn Ant-Design 官网镜像地址:http://ant-design.gitee.io/index-cn 或者  Ant Design - 一套企业级 UI 设计语言和 React 组件库   2、 Ant-Design-Pro 原地址: https://pro.ant.design/index-cn Ant-Design-Pro 镜像地址:http://ant-design-pro.gitee.io/index-cn   3、

    2024年02月12日
    浏览(47)
  • 一个比官网更好的el-table 实现跨行展示的例子

    el-table 实现跨行展示的例子,好吧,这个问题好像挺容易的,官网文档就有例子,用的是span-method,不过官网给的例子其实实现起来有时候并不容易,而且也不是很灵活,这里给出一种比官网更好的实现方式。以跨行为例,跨列其实是类似的。 效果如图 1、使用的还是官方的

    2024年01月18日
    浏览(48)
  • 如何通过内网穿透实现无公网IP远程访问内网的Linux宝塔面板

    正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能 学习网站, 通俗易懂,风趣幽默 ,忍不住分享一下给大家。点击跳转到网站。 宝塔面板作为建站运维工具,适合新手,简单好用。当我们在家里/公司搭建了宝塔,没有公网IP,但是想要在外也可以访问内网

    2024年02月03日
    浏览(40)
  • SpringCloud学习笔记(三)_服务提供者集群与服务发现Discovery

    既然SpringCloud的是微服务结构,那么对于同一种服务,当然不可能只有一个节点,需要部署多个节点 架构图如下: 由上可以看出存在多个同一种服务提供者(Service Provider) 搭建服务提供者集群 1、参考:SpringCloud 快速入门搭建单机版的:Eureka Server、Service Provider、Service Con

    2024年02月11日
    浏览(39)
  • WS2812+ESP32 diy拾音灯+各种灯效 通过Blinker控制

    软件版本:2.0.0 2023.02.08 修复软件开机自启动相关bug,具体为bat文件创建快捷方式时起始路径错误导致无法创建ip.bin 修复方式为快捷方式时起始路径向前一级 后续如有更新会更新博客。 ESP32开发板一个 ws2812灯带一条(我买的60灯珠) 杜邦线几根(公对母,主要用于灯带和开

    2023年04月18日
    浏览(42)
  • 通过例子深入了解c++/c的构建系统

    C/C++ is the mother of many popular programming languages out there today, all the fancy programming languages we use today like Python, JavaScript are built using C/C++. For example, the standard python interpreter  CPython  is built using C and the most popular JavaScript implementation  V8  is built using C/C++, C/C++ also powers most of the underlyin

    2024年02月04日
    浏览(29)
  • 通过ganache与以太坊Dapp实现交互 —— 简单的例子

    准备条件: 环境:Centos7或者其他版本的linux 必备: 安装npm (推荐16.1.0版本) 以及ganache-cli 在dapp目录下的ganache目录启动ganache-cli 会输出下面的结果: 创建一个备用目录testdapp 安装express 创建工程 先要进行一些安装 在MyDapp文件下会出现以下目录 启动我们的工程 登录游览器ht

    2024年02月06日
    浏览(31)
  • Unity可视化Shader工具ASE介绍——6、通过例子说明ASE节点的连接方式

    阿赵的Unity可视化Shader工具ASE介绍目录   大家好,我是阿赵。继续介绍Unity可视化Shader编辑插件ASE的用法。上一篇已经介绍了很多ASE常用的节点。这一篇通过几个小例子,来看看这些节点是怎样连接使用的。   这篇的内容可能会比较长,最终是做了一个遮挡X光的效果,不

    2024年02月07日
    浏览(47)
  • 通过一个实际例子说明Django中的数据库操作方法OneToOneField()的用法【数据表“一对一”关系】

    当我们在Django中定义一个模型时,可以使用 OneToOneField 来建立一个一对一的关系。这种关系表示两个模型之间的一种特殊关联,其中一个模型的实例只能与另一个模型的实例关联。 让我们以一个简单的示例来说明 OneToOneField 的用法。假设我们正在构建一个简单的博客应用,其

    2024年02月13日
    浏览(55)
  • 通过一个实际例子说明Django中的数据库操作方法法ForeignKey()的用法【数据表“一对多”关系】

    当使用Django进行数据库操作时,ForeignKey(外键)是一种非常有用的字段类型。它允许在数据库表之间创建关联关系,类似于其他数据库系统中的外键概念。通过ForeignKey字段,我们可以建立一个模型与另一个模型的一对多关系。 以下是一个实际例子,使用ForeignKey字段在Djang

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包