SOAP技术与B2B应用集成

通过webservice实现springboot项目间接口调用与对象传递 Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。... 阅读详情

SOAP技术与B2B应用集成
SOAP的消息结构与数据的组织方法

柴晓路
Chief System Architect
2001年4月24日

内容:
SOAP的消息框架
SOAP encodingStyle属性
SOAP Header
SOAP actor属性
SOAP mustUnderstand属性
SOAP Body
使用SOAP Body
SOAP Header和SOAP Body的语义关系
SOAP Fault
SOAP Fault代码
结语
参考资料
作者简介

本文延续前文SOAP技术和应用概览,结合应用实例,对SOAP消息的结构做了详细而精确地阐述,通过对SOAP Envelope、SOAP Header、SOAP Body的详细介绍使用户对如何使用SOAP消息来描述RPC调用和响应有了一个完整而深入地了解,并为本系列后面的介绍SOAP消息中数据的编码规则的文章奠定了结构基础。

SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的轻量级机制。而传送信息的基本单元承载体就是SOAP消息。从根本上来看,SOAP消息是从发送方到接受方的一种传输方法,但就象前面SOAP技术及应用概览一文中阐述的那样,SOAP消息一般会和实现模式结合,例如请求/响应。SOAP的实现可以为特殊网络系统的特有特征来优化。例如,通过HTTP binding将SOAP响应消息通过HTTP响应来传输,请求和响应使用同一连接。

当然,无论SOAP是与哪种协议绑定,它都使用同一种消息的描述框架格式,这种框架格式就是以SOAP Envelope(SOAP信封)为根元素,内含SOAP Header和SOAP Body子元素的这样一个XML文档。SOAP消息描述文本是一种XML Application。之所以称之为描述框架,而不称为描述,是因为SOAP规范为SOAP Header和SOAP Body定义了强大的扩展机制,使用户可以按需要在其中增加与应用相关的自定义描述格式,SOAP规范只是定义了消息描述的一个骨架。

所有的SOAP消息都是使用XML格式来编码的。SOAP应用程序在生成由SOAP定义的所有元素和属性的时候,应该包含恰当的SOAP的命名空间。SOAP应用程序必须能处理其收到的消息中的SOAP命名空间。它必须丢弃那些包含不正确命名空间的消息,并且可以处理那些不包含SOAP命名空间的SOAP消息,就好象他们包含了正确的命名空间一样。

SOAP定义了两个命名空间:

  • SOAP信封的命名空间标识为http://schemas.xmlsoap.org/soap/envelope/
  • SOAP编序的命名空间标识为http://schemas.xmlsoap.org/soap/encoding/


SOAP消息必须不包含DTD,同时SOAP消息也必须不包含PI(Processing Instructions)。

除SOAP mustUnderstand attribute和SOAP actor attribute外,一般允许属性及属性值自由地选择是在XML实例中描述还是在XML Schema中描述,当然前提是他们具有相同的效果。也就是说,在模式(schema)中使用默认值或固定值定义在语义上等价于在实例中的值定义。

例如:在Schema中定义

<element name=&quotcompany" type=&quotstring" fixed=&quotDealEasy" >
然后在XML实例中定义
<company />
与直接在XML实例中定义
<company >DealEasy<company />


本文所引用的资源主要包括两类,一类用于解决B2B电子商务应用交互和集成的系列技术标准规范,他们与SOAP是一个不可分割的技术体系,包括UDDI、SOAP、WSDL、XML等,另一类是SOAP的开发软件包,包括Microsoft的SOAP软件包SOAPToolkit和Apache Project的SOAP Package。本文的最后给出了这些资源的链接,有兴趣的读者可以通过这些资源链接找到所需的内容

SOAP的消息框架

SOAP消息是由一个强制的SOAP Envelope、一个可选的SOAP Header和一个强制的SOAP Body组成的XML文档。作为SOAP消息的该XML文档将在本规范的其余部分被引用。而本节的元素和属性的命名空间标识是http://schemas.xmlsoap.org/soap/envelope/。SOAP消息应当包含如下部分:

  • Envelope是表示该消息的XML文档的顶级元素
  • Header则是为了支持在松散环境下在通讯方之间尚未预先达成一致的情况下为SOAP消息增加特性的通用机制。SOAP定义了很少的一些属性来用于指明谁可以处理该特性以及它是可选处理的还是强制处理的。
  • Body为该消息的最终接收者所想要得到的那些必须处理的信息提供了一个容器。此外,SOAP定义了Body的一个子元素Fault用于报告错误。

这些XML元素的语法规则如下:

  1. Envelope
    • 元素名为 Envelope
    • 该元素必须在SOAP消息中出现,一般是根元素
    • 该元素可以包含命名空间申明和额外的属性。如果出现额外属性(并非是SOAP规范预定义的属性),则必须使用命名空间修饰。类似的,该元素可以包含额外的子元素,这些子元素如果出现,必须有命名空间修饰并且必须跟在SOAP Body元素之后,也就是说Envelope的直接子元素Header和Body必须排列在最前面。
  2. Header
    • 元素名为 Header
    • 该元素可以在SOAP消息中出现,但并不是必须出现(也就是说可以仅使用Body元素完成一次SOAP消息的信息描述)。如果出现,该元素必须是SOAP Envelope元素的第一个直接子元素。
    • 该元素可以包含一系列的Header条目,这些条目都应当是Header元素的直接子元素。Header的所有直接子元素必须有命名空间修饰。
    • Header条目自身可以包含下级子元素,但这些元素不是Header条目,而是Header条目的内容。
  3. Body
    • 元素名为 Body
    • 该元素必须在SOAP消息中出现,同时必须是SOAP Envelope元素的一个直接子元素。若该消息中包含Header元素,则Body元素必须直接跟随Header,为Header元素的相邻兄弟元素。若Header不出现,则其必须是Envelope的第一个直接子元素。
    • 该元素可以包含一系列的Body条目,这些条目都应当是Body元素的直接子元素。Body的所有直接子元素必须有命名空间修饰。SOAP定义了SOAP Fault元素,它用来指示调用错误的信息。
    • Boidy条目自身可以包含下级子元素,但这些元素不是Body条目,而是Body条目的内容。


下面是一个SOAP消息的例子,其中Envelope包含一个Header元素和一个Body元素。Header元素有两个Header条目,他们的命名空间修饰都是uniB2B,两个Header条目各有一个子元素。而Body元素有一个Body条目,该条目包含两个子元素。

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Header>
       <uniB2B:AccessAuthenticated xmlns:uniB2B=”Some-URI”>
           <SessionKey>76E4#12A@-98JA#V5GQ</SessionKey>
       </uniB2B:AccessAuthenticated >
       <uniB2B:GetLastProductPrice xmlns:uniB2B ="Some-URI">
            <Price>243900.00</Price>
       </uniB2B:GetLastProductPrice>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
       <uniB2B:RequestPurchaseOrder xmlns:uniB2B ="Some-URI">
           <ProductID>Jaguar_X_Type</ProductID >
           <ProductPrice>243900.00</ProductPrice>
       </uniB2B:RequestPurchaseOrder >
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP encodingStyle属性

SOAP的全局encodingStyle属性被用于指明在SOAP消息中使用哪种编序规则。该属性可以在任意元素中出现,并且其作用范围包括该元素的内容和所有其子元素中未使用该属性的所有子元素,这就象XML命名空间定义的作用范围一样,是向下传递的。对于一个SOAP消息来说,没有默认的编码定义。

SOAP encodingStyle属性的值是一个或多个用于标识编序规则(对数据类型和数据类型实例的描述规则)和用于标识解序SOAP消息的规则的有序列表,其排序是按照详尽程度从大到小排列。下面是一些值的例子:

"http://schemas.xmlsoap.org/soap/encoding/"
"http://schema.dealeasy.com/soap/encoding/ http://schema.dealeasy.com/soap/encoding/additional/"
""

而SOAP规范中定义的编序规则的标识为http://schemas.xmlsoap.org/soap/encoding/。消息若要使用特别的编序应该使用SOAP encodingStyle属性来指明。另外,所有在句法上由http://schemas.xmlsoap.org/soap/encoding/开始的URI序列表明这其中包含的所有URI都与SOAP规范中定义的SOAP编码规则相一致。(虽然可能会添加潜在的更为严格的规则,也就是说http://schemas.xmlsoap.org/soap/encoding/标识的编码规则是一个编码的基类)

一个空值的URI(“”)明确地指明并未为其所包含的元素声明任何编码风格。这可以为包含的元素关闭任何前面预先的声明。

SOAP Header

SOAP提供了一个可扩展的机制用于在分散的网络环境下,模块化地扩展SOAP消息的描述能力,而通讯双方并不需要有完整的预先的约定。典型的扩展例子可以是实现一些诸如认证、事务管理以及支付的Header条目,当然对于更复杂的多步骤的B2B协同,通过扩展相对复杂的Header条目也可以实现,在前面的文章SOAP技术及应用概览中就有一个完整的例子。

按照SOAP的语法,Header元素应当被编码为SOAP Envelope XML文档的第一直接子元素。Header的所有直接子元素都被称为Header条目。

Header条目的编码规则包括:

  1. 一个Header条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。SOAP Header元素的所有直接子元素都必须是完整修饰的。不允许任何不带命名空间修饰的Header条目存在。
  2. SOAP encodingStyle属性可以用于指明Header条目的编码风格,而encodingStyle属性在前面已经详细介绍了。
  3. SOAP mustUnderstand属性和SOAP actor属性可以用于指明如何处理条目和由谁来处理条目。


在SOAP Header中,SOAP Header属性的设置是为了让SOAP消息的接收者了解应该如何处理该消息。一个生成SOAP消息的SOAP应用程序应该仅使用SOAP Header元素的直接子元素的SOAP Header属性。而对于那些并非作为SOAP Header元素的直接子元素出现的SOAP Header属性,SOAP消息的接受者必须忽略。

以下是一个Header的例子,其中包含了一个元素标识Priority和一个mustUnderstand属性及其值1,以及Priority的值7,该元素表明该消息的处理优先权为7。

<SOAP-ENV:Header>
   <uniB2B:Priority
      xmlns:uniB2B="some-URI" SOAP-ENV:mustUnderstand="1">
          7
   </uniB2B:Priority>
</SOAP-ENV:Header>

SOAP actor属性

SOAP消息从生成者到达最终接受者,将潜在地沿着消息路径(message path)经过一系列的SOAP中间介。SOAP中间介是一个能够接受和转发SOAP消息的应用程序。所有的中间介都如同最终接受者一样由一个URI来标识。

并非一个SOAP消息的所有部分都是最终接收者需要了解的调用信息,其中部分是路径中的一个或多个中间介所需要处理的。Header元素中接收者角色类似合约的接受者,他并不能将其交给其它方。也就是说,一个接收者接到其需要接收的Header元素必须不转发该Header给SOAP消息路径中的下一个应用程序。该接收者可以插入一个类似的Header元素,但在这个情况下,合约关系存在于该应用程序及下一个Header元素的接收者之间了。

SOAP actor全局属性可以被用于指明Header元素的接收者。而SOAP actor属性的值是一个URI。URI: http://schemas.xmlsoap.org/soap/actor/next指明该Header元素是直接的下一个进行消息处理的SOAP应用程序需要处理的。这与HTTP的连接头字段的hop-by-hop scope model的表示是一致的。

若省略SOAP actor属性,则表明该消息的接收者是SOAP消息的最终接收者。

对于一个SOAP消息的实例(在实际传输中的SOAP消息),这个属性必须出现以指明该消息的接收方的URI。

SOAP mustUnderstand属性

SOAP mustUnderstand全局属性用于指明一个Header条目是强制必须处理的还是可选的要求接收者处理的。Header条目的接收者由SOAP actor属性来定义。mustUnderstand属性的值可取为“0”或“1”。若没有使用SOAP mustUnderstand属性,则在语义上等价于mustUderstand属性出现同时取值为“0”。

若Header元素带有值为“1”的SOAP mustUnderstand属性,则该Header条目的接收者要么必须遵循语义(由具备完整修饰的元素名来传达)并正确地处理这些语义,要么必须宣称处理消息失败。也就是说如果该应用程序发现自己无法识别某一个Header条目(应为在自己的处理逻辑里面没有该条目),那么必须申明错误,并响应该错误信息。

SOAP mustUnderstand属性是为了考虑健壮地升级而设置的。所有用值为“1”的SOAP mustUnderstand属性来标记的元素必须被认为是可以影响该元素的上级元素或同级元素的语义。而这种风格标记的元素应保证对语义的修改并不能被那些不能完全理解该修改后的语义的那些元素静默地或假设地、不正确地忽略。

该属性若要生效必须在实例中出现,也就是说不能依靠XML Schema的缺省值或固定值的设置来使该属性生效。

SOAP Body

SOAP Body元素提供一个简单的用于与消息的最终接收者交换信息(这些信息都是必须处理的)的机制。而Body元素的典型应用包含序列的RPC调用和错误报告。

Body元素在编码上应当作为SOAP Envelope元素的一个直接子元素。如果包含Header元素,则Body元素必须直接跟随Header元素,为Header元素的直接下一个兄弟元素,否则Body元素必须是Envelope元素的第一直接子元素。

所有Body元素的直接子元素被称为Body条目,同时每一个Body条目都应当编码为SOAP Body元素里的一个独立元素。

Body条目的编码规则包括:

  1. 一个Body条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。SOAP Body元素的直接子元素可以是命名空间修饰的。
  2. SOAP encodingStyle属性可以被用来表明Body条目中使用的编码规则。


SOAP只预定义了一个Body条目:用于向调用方报告错误的Body条目:Fault。

使用SOAP Body

下面是一对SOAP调用/响应的例子,在调用消息中Body包含了一个描述调用方法的Body条目RequestPurchaseOrder,它包含两个参数ProductID和ProductPrice。而在响应消息中,Body中包含了一个Body条目ResponsePurchaseOrder用于描述响应调用的返回信息,其中包含OrderID、AuthenticatedID、ProductID、ProductNumber、IssueDate。

RPC调用的SOAP消息表示

POST /ProductQuote HTTP/1.1
Host: service.eMarketplace.com.cn
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Header>
       <uniB2B:AccessAuthenticated xmlns:uniB2B=”Some-URI”>
           <SessionKey>76E4#12A@-98JA#V5GQ</SessionKey>
       </uniB2B:AccessAuthenticated >
       <uniB2B:GetLastProductPrice xmlns:uniB2B ="Some-URI">
            <Price>243900.00</Price>
       </uniB2B:GetLastProductPrice>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
       <uniB2B:RequestPurchaseOrder xmlns:uniB2B ="Some-URI">
           <ProductID>Jaguar_X_Type</ProductID >
           <ProductPrice>243900.00</ProductPrice>
       </uniB2B:RequestPurchaseOrder >
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

RPC响应的SOAP消息表示

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
       <uniB2B:ResponsePurchaseOrder xmlns:uniB2B ="Some-URI">
           <OrderID>AJR786503</OrderID>
           <AuthenticatedID>76E4#12A@-98JA#V5GQ</AuthenticatedID>
           <ProductID>Jaguar_X_Type</ProductID >
           <ProductPrice>243900.00</ProductPrice>
           <ProductNumber>1</ProductNumber>
           <IssueDate>2001-4-1</IssueDate>
       </uniB2B:ResponsePurchaseOrder >
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP Header和SOAP Body的语义关系

Header和Body在定义上是独立的,但在事实上是相联系的。一个Body条目和一个Header条目的关系是:一个Body条目在语义上与这样一个Header条目等价:该Header条目将由默认参与者(最终接受者)解释同时由值为“1”的SOAP mustUnderstand属性标记。默认参与者可以不使用actor属性的方式来指明。

SOAP Fault

SOAP Fault元素是用于在SOAP消息中传输错误及状态信息。如果SOAP消息需要包含SOAP Fault元素的话,它必须作为一个Body条目出现,同时在Body元素内它必须不出现多于一次(至多出现一次)。

SOAP Fault元素定义了如下子元素:

  1. faultcode
  2. faultcode元素是应那些要以算法的机制来标识错误的软件的需要。faultcode必须在SOAP Fault元素中出现,同时faultcode的值必须是属于后面一节中定义的一个修饰名。SOAP定义了一个很小的SOAP错误代码的集合用于覆盖基本的SOAP错误。

  3. faultstring
  4. faultstring元素是为那些错误代码提供人可以读懂的错误解释,它不是为程序处理而设。Faultstring元素有点类似于HTTP中定义的’Reason-Phrase’。faultstring必须在SOAP Fault元素中出现,同时它至少应该提供一些解释该错误种类的信息。

  5. faultactor
  6. faultactor元素是为描述在消息路径中是谁引起了该错误的发生的信息的。它类似于SOAP actor属性,不过它不是用于指示Header条目的接收者,而是用于指示错误源。faultactor属性的值是一个标识该源的一个URI。作为SOAP消息的非最终接收者的应用程序必须在SOAP Fault元素中包含faultactor元素。而消息的最终接收者可以使用faultactor元素来明确地指明是它生成了该错误。

  7. detail
  8. detail元素是用于传输与Body元素相关的应用程序特别的错误信息。如果Body元素中的内容不能被成功地处理的时候,它必须出现。它必须不能被用于传输属于Header条目的错误信息。详细的属于Header条目的错误信息必须在Header条目中表示传输。

    若Fault元素中不出现detail元素则表明其中的错误与Body元素的处理无关。这可以用于区分在在错误情况下Body元素是否被处理过。

    detail元素的所有直接子元素都被称为detail条目,同时每个detail条目都作为detail元素中的一个独立的元素进行编码。



Detail条目的编码规则如下:

  1. 一个detail条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。Detail元素的直接子元素可以是命名空间修饰的。
  2. SOAP encodingStyle属性可以被用来表明detail条目中使用的编码规则。
其他的Fault子元素可以出现,他们都应当提供命名空间修饰。

SOAP Fault代码

当描述由本规范定义的错误的时候,faultcode元素必须使用在本节中定义的faultode的值。这些faultcode值的命名空间标识为http://schemas.xmlsoap.org/soap/envelope/。

默认的SOAP faultcode值是按照一种可扩展的风格来定义的,它允许在维持以有的faultcode值的向后兼容的基础定义新的SOAP faultcode值。这一机制在使用上非常类似与HTTP中基本状态类的定义1xx, 2xx, 3xx等。不过,他们是用XML修饰名来定义,而不是用整数。“.”符号是faultcode值的分隔符,用于指明“.”左边的是一个比右边更泛化的错误代码。例如:

Client.Authentication

在本文档中定义的faultcode值集合是:

名称

含义

VersionMismatch

处理程序发现在SOAP Envelope元素中有一个非法的命名空间。

MustUnderstand

SOAP Header元素的一个直接子元素无法被理解或者他并不遵守由处理对象要求的SOAP mustUnderstand属性必须取值为"1"的要求。

Client

Client错误类用于指示以下错误:消息的格式有误或消息中缺乏能成功处理所必须的一些适当信息。例如,消息中可能缺乏适当的认证和支付信息。一般情况下应指明消息不应该在没有修改过的情况下重发。可参阅Fault detail子元素的描述。

Server

Server错误类用于表明消息无法被处理的原因,但那些属于内容上的错误并不属于该范畴,它主要被用于指示那些属于处理上的错误。例如,处理操作需要包含与一个上游处理程序进行通讯,但该程序没有响应。但该消息可能在下一个时间点上被成功处理。可参阅Fault detail子元素的描述。

结语

本文介绍了SOAP消息的消息结构及SOAP消息各个元素的XML语法和具体应用方法,我将在下一篇文章中详细描述在SOAP元素中如何描述具体数据(数据结构/数据实例),并详细介绍用于描述数据的SOAP编码规则的语法。

参考资料

作者简介

WebService应用深入解析与实践 本文还有配套的精品资源,点击获取 简介:WebService是一种基于XML的分布式应用程序构建技术,支持平台无关的通信和数据交换。本篇文章将深入探讨WebService的核心技术(SOAP、WSDL、UDDI),解析其工作流程,并探索其在跨平台通信、B2B集成、移动应用开发等领域的应用。同时,文章将介绍Java和.NET等不同开发环境下的源码实现工具和最佳实践。理解Web... 阅读详情

相关推荐

企业服务集成:案例研究与架构解析

本文通过案例研究的方式,深入探讨了如何运用Web服务规范(包括SOAP、WSDL等)在B2B集成场景中创建有效的解决方案。文章详细描述了服务包订购的商业场景,以及如何将现有应用系统通过Web服务架构进行整合。此外,还介绍了相关的技术细节,如WS-Security协议、WS-AtomicTransaction等,展示了如何通过这些技术保护交易过程中的数据安全和完整性。

weixin_42515842的博客 515

SOAP技术与B2B应用集成(1)

SOAP技术与B2B应用集成(1)柴晓路2002-4-26本文最初由 IBM developerWorks中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/SOAP技术及应用概览自XML技术被引入到B2B电子商务应用中去,人们发现在B2B电子商务应用环境中,XML的确是一个非常优秀而且极为适合的技术。XML作为基于Interne

fennivel的专栏 2580

SAP COPA实战:手把手教你用CMOD增强搞定自定义特性派生(以客户字段为例)

本文详细介绍了在SAP COPA模块中通过CMOD增强实现自定义特性派生的全流程,以客户字段为例,展示了从特性设计、SPRO配置到特性派生逻辑实现的完整步骤。重点讲解了如何利用CMOD增强技术解决业务需求,提升获利能力段分析的灵活性和准确性。

weixin_30275415的博客 429

SOAP技术与B2B应用集成(2)

SOAP技术与B2B应用集成(2)SOAP的消息结构与数据的组织方法本文最初由 IBM developerWorks 中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的轻量级机制。而传送信息的基本单元承载体就是SOAP消息。从根本上来看,SOA

fennivel的专栏 1565

AI智能体项目管理框架agent-pm:从原理到实战的多智能体协作指南

在人工智能和自动化技术快速发展的今天,多智能体系统已成为实现复杂任务自动化的重要技术路径。其核心原理在于通过任务分解、角色分配和状态管理,让多个AI智能体像人类团队一样协同工作,从而突破单个模型的性能边界。这种架构的技术价值在于将软件工程中成熟的项目管理方法论引入AI领域,显著提升了自动化流程的可预测性、可观测性和可复用性。在实际应用场景中,多智能体协作框架能够高效处理从代码开发、文档撰写到数据分析等一系列任务,尤其适合需要多步骤、多专业协同的复杂项目。本文聚焦的agent-pm框架,正是这一领域的典型实践

weixin_42533910的博客 714

从仿真到部署:基于ROS2与Gazebo的UR5e机械臂全流程控制实践

本文详细介绍了基于ROS2与Gazebo的UR5e机械臂全流程控制实践,从环境准备、模型构建到控制器开发和仿真优化,最终实现真实机器人部署。通过实战案例和避坑指南,帮助开发者掌握机器人仿真与控制的关键技术,提升UR5e机械臂在物料分拣等任务中的性能与稳定性。

weixin_29184371的博客 288

SOAP技术与B2B应用集成(5)

SOAP技术与B2B应用集成(5)本文最初由 IBM developerWorks 中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/SOAP技术总结及其在InterOP Stack中的作用在先前的系列文章中,已经系统地介绍了SOAP技术的各个组成部分:SOAP Message、SOAP Envelope、SOAP Encoding、S

fennivel的专栏 1380

自制JS某课脚本

根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行

2301_81243054的博客 3460

SOAP技术与B2B应用集成(3)

SOAP技术与B2B应用集成(3)SOAP的型系统和数据编码规则本文最初由 IBM developerWorks 中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/SOAP的类型和数据的编码是基于一个简单类型系统的,这个简单类型系统是基于程序语言、数据库和半结构数据中的类型系统的,是程序语言、数据库和半结构数据中类型系统的公共特性的一个

fennivel的专栏 1418

光模块数字诊断监控(DDM)功能

DDM(Digital Diagnostic Monitoring)数字诊断监控,由行业组织SFF Committee制定,遵循SFF-8472多源协议定义的标准参数而工作,规范了光模块和网络设备的软硬件所需遵循的标准数值或范围,确保了网络设备供应商和光模块供应商之间所提供产品的互操作性不同。:通过监测激光器的偏置电流来预测激光器的劣化,从而确保在故障发生之前将业务切换到备用链路上或替换有可能故障的光模块,因此起到了预测光模块寿命的作用。光模块DDM信息可以通过SNMP读取光模块的接收光功率和发射光功率。.

光模块的博客 2300

STM32实战篇:使用USART发送/接收数据

在发送字符时也可以直接使用其对应的ASCLL码,例如: USART_SendData(USART1, 0x61);

qq_74114817的博客 596

SOAP技术与B2B应用集成(4)

SOAP技术与B2B应用集成(4)SOAP消息中的类型/值的编序方法和示例本文最初由 IBM developerWorks 中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/在前面的文章SOAP的型系统和数据编码规则中,我们能了解到SOAP的类型和数据的编码是基于一个简单类型系统的,这个简单类型系统是基于程序语言、数据库和半结构数据中的

fennivel的专栏 1376

6、深入解析Microsoft 365核心服务对比与迁移策略

本文深入解析了Microsoft 365的核心服务,包括身份和设备管理、现代设备配置体验、Exchange和SharePoint的迁移策略以及Microsoft Teams的协作功能。同时探讨了迁移过程中需要考虑的安全控制措施,为组织规划和实施云迁移项目提供了全面的指导和建议。

k8s6orchestrator的博客 108

SOAP技术及应用概览一

本文最初由 IBM developerWorks中国网站发表,其网址是   http://www.ibm.com/developerWorks/cn/   SOAP技术及应用概览   自XML技术被引入到B2B电子商务应用中去,人们发现在B2B电子商务应用环境中,XML的确是一个非常优秀而且极为适合的技术。XML作为基于Internet环境多点数据交换的最佳技术完全适合在B2B电子商务环境中

java爱分享 1353

《FPGA DDR3权威实战:从基础到高速故障录波系统》专栏导览:从不知所措到心中有数

本文是一份DDR3实战指南,作者从自身学习经历出发,分享了一套循序渐进的DDR3应用路线图。专栏包含12篇文章,从基础配置(MIG IP核、AXI总线)、仿真测试到实际项目应用(功能测试、性能测试),最后深入原生MIG接口实战,通过一个高速故障录播系统案例完整展示DDR3开发流程。文章特别强调实践性,旨在帮助读者系统掌握DDR3开发技能,避免作者当年踩过的坑。每篇都配有优快云链接,适合FPGA开发者按顺序学习参考。

FPGA_小田老师的博客 331

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SOAP消息中的类型/值的编序方法和示例四

SOAP技术与B2B应用集成(4)SOAP消息中的类型/值的编序方法和示例中国网站发表,其网址是   http://www.ibm.com/developerWorks/cn/   在前面的文章SOAP的型系统和数据编码规则中,我们能了解到SOAP的类型和数据的编码是基于一个简单类型系统的,这个简单类型系统是基于程序语言、数据库和半结构数据中的类型系统的,是程序语言、数据库和半结构数据中类型系

java爱分享 1521

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

webservice技术介绍

一、WebService到底是什么?    一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。    所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。     所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台

小小布的程序世界 4215

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用Web Service技术实现跨平台数据交换与业务集成

Web Service 是一种基于网络的平台独立的业务逻辑单元,它使用标准的 Web 协议(如 HTTP、XML、SOAP、WSDL 等)进行通信。Web Service 的主要目标是实现不同应用程序之间的互操作性,无论这些应用程序是运行在相同的平台上还是不同的平台上。确定服务功能:明确 Web Service 的功能和操作。定义接口:使用 WSDL 文件定义 Web Service 的接口、消息格式、绑定方式和访问地址。

qq_36287830的博客 1375

webservice(一)---c#开发webservice

1.1、Web Service          Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使

outcastllx的专栏 442

Web Service技术

Web Service 是一种通过互联网协议(如 HTTP)提供服务的软件组件,它使用标准的 XML 格式来封装数据和消息,以实现不同平台、不同编程语言之间的互操作性。简单来说,它允许不同的应用程序像调用本地方法一样调用远程的服务接口,而无需关心服务的具体实现细节和底层技术。

weixin_42795092的博客 754

关于 web service 详解

1、 webservice  它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web   应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问

mengyulove的专栏 535

Web Service简介

什么是Web Service 对这个问题,我们至少有两种答案。从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。例如,你想创建一个Web service ,它的作用是返回当前的天气情况。那么你可已建立一个ASP页面,它接受邮政编码

henry_dx的专栏 442

Web Service 阐述

Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocal,简...

mgh_php的专栏 136
上一篇: Web Service在电信行业数据业务中的应用
下一篇: A PHP Web Services Client
smartcn
博客等级 码龄24年 1粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值