gpt4 book ai didi

java - 使用 SOAPHandler 获取 SOAP 响应的请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:10 26 4
gpt4 key购买 nike

我有一个 SOAPHandler。我需要捕获响应的请求

public class SOAPLoggingHandler implements SOAPHandler<SOAPMessageContext> {

@Override
public boolean handleFault(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}
public boolean handleMessage(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}

private void writeMessageLogging(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

if (logger.isDebugEnabled()) {
if (outboundProperty.booleanValue()) {
logger.debug("Request message");
} else {
logger.debug("Response message:");
}
}
SOAPMessage message = smc.getMessage();
ByteArrayOutputStream out=null;
try {
if (!outboundProperty.booleanValue()) {
String requestXML="Request of the Response, is possible?";
}
out = new ByteArrayOutputStream();
message.writeTo(out);
String strMsg = new String(out.toByteArray());
logger.debug("strMsg:" + strMsg);
out.close();
} catch (Exception e) {
logger.error("Exception in handler:", e);
}finally{
IOUtils.closeQuietly(out);
}

}
}

参见:

String requestXML="Request of the Response, is possible?";

是否可以在响应句柄中捕获请求?

最佳答案

我终于解决了我的问题:



public class SOAPLoggingHandler implements SOAPHandler {

private static Logger logger = Logger.getLogger(SOAPLoggingHandler.class
.getCanonicalName());

public static final String REQUEST_XML="REQUEST_XML";


@Override
public boolean handleFault(SOAPMessageContext context) {

writeMessageLogging(context);
return true;
}

@Override
public boolean handleMessage(SOAPMessageContext context) {
writeMessageLogging(context);
return true;

}

private void writeMessageLogging(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

SOAPMessage message = smc.getMessage();
ByteArrayOutputStream out=null;
try {
out = new ByteArrayOutputStream();
message.writeTo(out);
String strMsg = new String(out.toByteArray());

if (!outboundProperty.booleanValue()) {
String requestXML=(String)smc.get(REQUEST_XML);
logger.debug("Request of Response:"+requestXML);
}else{
smc.put(REQUEST_XML,strMsg);
}
logger.debug("strMsg:" + strMsg);
out.close();
} catch (Exception e) {
logger.error("Exception in handler:", e);
}finally{
IOUtils.closeQuietly(out);
}

}
}

为此我使用了 SOAPMessageContext。

关于java - 使用 SOAPHandler 获取 SOAP 响应的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com