每个请求/响应的Web Service SOAP单独xml文件?

时间:2015-07-20 07:15:42

标签: xml soap

我是WebServices的新手,所以我想到了使用请求和响应来定义信封。

我的问题是,如果每个请求/响应都应该在FooRequest.xml,FooResponse.xml中获得自己的信封。或者信封中可以有多个请求/响应?如果是这样,在一个信封中做多个请求是否合适?

2 个答案:

答案 0 :(得分:1)

我认为,由于SOAP请求是XML文档,因此您可以拥有多个Envelopes元素(它不会给您任何错误),但只会处理第一个并将其发送到服务器。

如果只有一个请求,那么应该只有一个响应与请求相关联。

你尝试使用任何UI工具,就像我尝试使用SOAPUI一样:

screenshot from SOAPUI

正如您所看到的,即使您有多个信封,但只有第一个信封将被发送到服务器并且响应与请求相关联。

答案 1 :(得分:1)

XML文件必须只有一个根元素。对于SOAP消息,该根元素是信封。因此,一条消息必须只有一个信封。

根据spec,信封有一个身体,可能有一个标题。 The schema没有为body和element定义任何上限,尽管这里的默认值是1。

规范进一步说明了一个body元素:

  

元素必须存在于SOAP消息中,并且必须是SOAP Envelope元素的直接子元素。它必须直接跟随SOAP Header元素(如果存在)。否则它必须是SOAP Envelope元素的第一个直接子元素。

这限制了您在SOAP信封中定义多个标题或正文元素。因此,消息需要一个SOAP信封和一个SOAP body元素,并且可能在SOAP主体之前包含一个SOAP标头。 SOAP标头和SOAP主体必须是SOAP信封的子元素。

由于规范允许多个正文条目,理论上可以使用一条SOAP消息发送多个请求。在实践中,我没有看过不止一个。因此,包括多个正文条目可能取决于您使用的基础框架。我想使用像Apache CXF这样的行业标准和类似的框架应该支持它。