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.