[英]Apache CXF 3.2 How to read SOAP fault message
我试图从CXF拦截器读取SOAP错误消息但我无法提取,我从Fidler捕获了响应
以下是fidler的回应
--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();
}
}
我通过在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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.