[java]代码库
public boolean handleMessage(MessageContext arg0) {
SOAPMessageContext ct = (SOAPMessageContext) arg0;
boolean isRequestFlag = (Boolean) arg0
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage msg = ct.getMessage();
if (isRequestFlag) {
try {
SOAPBody body = msg.getSOAPBody();
Node port = body.getChildNodes().item(0);
String portContent = port.toString();
NodeList list = port.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
port.removeChild(list.item(i));
}
ByteArrayOutputStream outArr = new ByteArrayOutputStream();
GZIPOutputStream zip = new GZIPOutputStream(outArr);
zip.write(portContent.getBytes());
zip.flush();
zip.close();
byte[] arr = outArr.toByteArray();
TestDataSource ds = new TestDataSource(arr);
AttachmentPart attPart = msg.createAttachmentPart();
attPart.setDataHandler(new DataHandler(ds));
msg.addAttachmentPart(attPart);
} catch (SOAPException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
public boolean handleMessage(MessageContext arg0) {
SOAPMessageContext ct = (SOAPMessageContext) arg0;
boolean isRequestFlag = (Boolean) arg0
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage msg = ct.getMessage();
if (!isRequestFlag) {
try {
Object obj = ct.get("Attachments");
Attachments atts = (Attachments) obj;
List list = atts.getContentIDList();
for (int i = 1; i < list.size(); i++) {
String id = (String) list.get(i);
DataHandler d = atts.getDataHandler(id);
InputStream in = d.getInputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPInputStream zip = new GZIPInputStream(in);
byte[] arr = new byte[1024];
int n = 0;
while ((n = zip.read(arr)) > 0) {
out.write(arr, 0, n);
}
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse(new ByteArrayInputStream(out.toByteArray()));
SOAPBody body = msg.getSOAPBody();
Node port = body.getChildNodes().item(0);
port.appendChild(doc.getFirstChild().getFirstChild());
}
} catch (SOAPException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
return true;
}
<handler-chains>
<handler-chain>
<handler>
<handler-name>TestClientHandler</handler-name>
<handler-class>test.TestClientHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>