0
меня ниже ответ MTOM как строкивручную Анализировать MTOM Сообщение
--uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml";
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Body><ns2:receiveDocumentFileResponse xmlns:ns2="http://webservice.edefter.gib.gov.tr/"><return><fileName>GIB-XXXX-201512-KB-000000.zip</fileName><binaryData><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:[email protected]"/></binaryData></return></ns2:receiveDocumentFileResponse></soap:Body></soap:Envelope>
--uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>
Content-Disposition: attachment;name="GIB-XXXX-201512-KB-000000.zip"
/***********MTOM Content****************/
--uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d--
Я использую CXF код модульного тестирования для анализа выше содержание в отношении к xop/mtom parse
Attachment всегда утратившим при выполнении itr.next (); линии, я получаю исключение java.lang.IndexOutOfBoundsException: Индекс: 0 Размер: 0
InputStream is = null;
InputStream attIs = null;
try {
org.apache.cxf.message.Message cxfMessage = new MessageImpl();
is = new ByteArrayInputStream(response.getBytes("UTF-8"));
// FileInputStream fis = new FileInputStream(new File(
// "D:/wss/gibreturn.txt"));
// String ct = "multipart/related; type=\"application/xop+xml\"; "
// + "start=\"<[email protected]>\"; "
// + "start-info=\"text/xml; charset=utf-8\"; "
// + "boundary=\"----=_Part_4_701508.1145579811786\"";
cxfMessage.setContent(InputStream.class, is);
cxfMessage.put(org.apache.cxf.message.Message.CONTENT_TYPE,
"application/xop+xml; charset=UTF-8; type=\"application/soap+xml\";");
AttachmentDeserializer deserializer = new AttachmentDeserializer(
cxfMessage);
deserializer.initializeAttachments();
InputStream attBody = cxfMessage.getContent(InputStream.class);
System.out.println(deserializer.toString());
Collection<org.apache.cxf.message.Attachment> atts = cxfMessage
.getAttachments();
Iterator<org.apache.cxf.message.Attachment> itr = atts.iterator();
org.apache.cxf.message.Attachment a = itr.next();
attIs = a.getDataHandler().getInputStream();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
}
}
if (attIs != null) {
try {
is.close();
} catch (Exception e) {
}
}
}
Спасибо С наилучшими пожеланиями
Конкретного вопрос может помощь: что бы вы хотели? –
@ Y.B. есть вложение в сообщении mtom, и я ожидаю, что AttachmentDeserializer должен обрабатывать вложение –