Apache CXF 3.2 Как прочитать сообщение об ошибке SOAP - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь прочитать сообщение о сбое SOAP от перехватчика CXF, но не могу извлечь, я получил ответ от Фидлера

Ниже приводится ответ Фидлера

--uuid:0674d395-99e7-44d8-966c-1f1d387f4234
Content-Id: <rootpart*0674d395-99e7-44d8-966c-1f1d387f4234@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=UTF-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope" xmlns=""><faultcode>S:Server</faultcode><faultstring>Upload Failed!</faultstring></S:Fault></S:Body></S:Envelope>

--uuid:0674d395-99e7-44d8-966c-1f1d387f4234--

следующий мой код

Добавлен FaultInterceptor для клиента

client.getInFaultInterceptors().add(faultInterceptor);

public class FlexFaultResponseInterceptor extends AbstractSoapInterceptor {

    public FlexFaultResponseInterceptor() {
        super(Phase.RECEIVE);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        Message InFaultMessage = message.getExchange().getInFaultMessage();
        Message OutFaultMessage = message.getExchange().getOutFaultMessage();
    }
}

1 Ответ

0 голосов
/ 09 июля 2019

Я решил свою проблему, добавив следующий код в InInterceptor

@Override
    public void handleMessage(SoapMessage message) throws Fault {
            CachedOutputStream out = message.getContent(CachedOutputStream.class);
            byte[] originalMessage = IOUtils.toByteArray( out.getInputStream() );
            String fault=new String(originalMessage)
    }
...