Thank you so much for enlightening me on this issue. I dout they can do this in the beginning. Now
I can go back to ask them to revise their spec.
-Daniel
Scott Nichol wrote:
Apache SOAP does not directly support multiple method calls in a single SOAP request/response, although presumably the messaging API could be used to accommodate this.
The SOAP 1.1 spec does not specifically mention multiple method calls in a single SOAP request/response. Section 7 describes RPC. It specifies the request and response each be modelled as a struct. Since the SOAP Body can have multiple children, in theory, each child could be a method call or method response. The only restriction I see is that the SOAP Fault can occur only once within a SOAP Body. Therefore, if multiple calls were sent in one request and there were multiple errors, the errors would have to be consolidated in a single SOAP Fault.
I don't know of any SOAP implementations that support multiple method calls in a single SOAP request, so interoperability would be questionable.
The SOAP 1.2 spec was released as a recommendation today. The RPC section there (http://www.w3.org/TR/2003/REC-soap12-part2-
20030624/#rpcinvocation) would seem to restrict the SOAP Body to a single request or response struct. Even so, this would not limit other SOAP representations from having two or more method calls.
On 24 Jun 2003 at 8:11, Daniel Zhang wrote:
We have customers demand customed SOAP request. So we have to manually construct SOAP Envelope.
However, our customer's proposal has TWO methods calls inside one SOAP envelope. Before I say NO
to them, I want to make sure here, is that possible that you can call TWO methods in one SOAP Body?
The SOAP Envelope looks like the following code. Please pay attention to "<soap:Body> ...</soap:Body>"
block, Apache-SOAP treats Manifest and cBody as TWO methods, and also their isd service ids are not the
same in Deployment Descriptor file(Here are "http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"
and "cb="http://mycompany.com/cbody.xsd"). So I built two methods Manifest and cBody, however, everytime
SOAP only call Manifest which is the first one. I have to delete "<eb:Manifest>...</eb:Manifest>" block then
method cBody was called. BTW, I use type of "mesage" calling for SOAP.
I studied so many examples and all are the ONE method call in ONE SOAP Envelope. So I wonder if it is possible
that make multiple method calls within ONE SOAP Envelope.
Thanks in advance,
-Daniel
<*soap:Envelope* xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"
xmlns:ch="http://mycompany.com/cheader.xsd"
xmlns:cb="http://mycompany.com/cbody.xsd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3/org/2001/XMLSchema"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://www.oasis-open.org/committees/ebxml-msg/schema/envelope.xsd
http://mycompany.com/cheader.xsd
http://mycompany.com/cbody.xsd">
<*soap:Header*>
<eb:MessageHeader eb:version="2.0" soap:mustUnderstand = "1">
<eb:From>L.A</eb:From>
<eb:To>N.Y</eb:To>
......
</eb:MessageHeader>
<ch:cHeader>
......
</ch:cHeader>
<*/soap:Header*>
<*soap:Body*>
<*eb:Manifest* eb:id="ID000001" eb:version="2.0">
<eb:Reference xlink:href="cid:project" xlink:type="simple" xlink:role="http://mycompany.com/roles/Poject_Description/" />
......
<*/eb:Manifest*>
<*cb: cBody*>
<cb: Name>John</cb:Name>
<cb:Address>
.......
</cb:Address>
........
<*/cb:cBody*>
<*/soap:Body*>
<*/soap:Envelope*>
Scott Nichol
Do not reply directly to this e-mail address, as it is filtered to only receive e-mail from specific mailing lists.