The SOAP with Attachments Specification
The specification Soap Messages With Attachments defines a multipart message format called a SOAP message package. A SOAP message package is constructed according to the following rules:
The SOAP header’s
Content-Type element must be the
multipart/related media type.
The SOAP message itself is carried in the root body part of the multipart/related structure, so the
type parameter of the
multipart/related media header must be
text/xml.
MIME attachments are referenced inside the SOAP message body using SOAP references.
Referenced MIME attachments must contain either a matching
Content-ID header or a matching
Content-Location header.
The specification also recommends that the root part contain a Content-ID header, and that the multipart/related media header contain a matching start parameter. This permits more robust error detection.
The code below shows a SOAP 1.1 message package that contains a SOAP message in the root part that references an attached base64-encoded GIF image:
MIME-Version: 1.0
Content-Type: multipart/related; boundary="MIME_Boundary";
type=text/xml; start="<contacts.xml@someCompany.com>"
--MIME_Boundary
Content-ID: <contacts.xml@someCompany.com>
Content-Type: text/xml; charset=us-ascii
<SOAP-ENV:Envelope xmlns:SOAP-ENV=
"http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getName>
<name>SomeCompany</name>
...
<photo href="cid:logo.gif@someCompany.com"/>
</getName>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--MIME_Boundary
Content-ID: <logo.gif@someCompany.com>
Content-Type: image/gif
Content-Transfer-Encoding: base64
.... base64 encoded gif data
--MIME_Boundary--
In this example, the element in the SOAP message
<photo href="cid:logo.gif@someCompany.com"/>
references the attached image with the corresponding Content-ID header.
The sections that follow describe how to send and receive SOAP messages with MIME attachments over HTTP using HydraExpress. These sections assume you are familiar with the basic steps for using HydraExpress to generate code and develop Web services.