Как определить в Java, является ли сообщение SOAP MTOM - PullRequest
0 голосов
/ 06 декабря 2018

Есть ли способ в Java (1.6), чтобы определить, является ли сообщение SOAP MTOM, или мне нужно создать метод для этого, чтобы проверить, есть ли в сообщении несколько элементов?

На основе спецификаций SOAP 1.2 для

определить, используется ли функция оптимизации передачи HTTP SOAP, путем проверки наличия типа носителя application / xop + xml

но я не вижу его в своем сообщении MTOM, которое в тестовом (минималистичном) случае выглядит как

------=_Part_0_591998098.1543337064443
Content-Type: application/soap+xml; charset=utf-8

<soapenv:Envelope>some SOAP message</soapenv:Envelope>


------=_Part_0_591998098.1543337064443
Content-Type: null
Content-ID: <1.4a159e8e@apache.org>
Content-Transfer-Encoding: binary
Content-Type: text/html

<?xml version="1.0" encoding="us-ascii"?><html><head><title>testlf</title></head><body><b>Message Type: </b>Direct<br /><b>Subject: </b>testlf<br /><hr /></body></html>

------=_Part_0_591998098.1543337064443
Content-Type: application/octet-stream
Content-ID: <http://tempuri.org/1/635742060149828871>
Content-Transfer-Encoding: binary

<?xml version='1.0'?><?xml-stylesheet type='text/xsl'?>Here is PDF

------=_Part_0_591998098.1543337064443--

1 Ответ

0 голосов
/ 14 декабря 2018

Я закончил с

private boolean isMTOM(SOAPMessage msg) throws SOAPException, IOException
{

    boolean isMTOM = false;

    MimeHeaders headers = msg.getMimeHeaders();
    String[] contentType = headers.getHeader("Content-Type");

    if(contentType[0].toLowerCase().contains("multipart/related") && (contentType[0].toLowerCase().contains("application/soap+xml") || contentType[0].toLowerCase().contains("application/xop+xml"))) {
        isMTOM = true;
    }

    return isMTOM;
}
...