gpt4 book ai didi

java - 从 Java Soap 处理程序获取响应

转载 作者:行者123 更新时间:2023-11-30 03:15:38 26 4
gpt4 key购买 nike

如果有人分享解决以下问题的经验,我将非常感激。我在 JDK 实现中有一个 SOAP 服务(我相信是 Metro)。

出于日志记录的目的,我们需要提取传入请求和生成的响应的正文。我尝试通过在服务器端实现 SOAPHandler 来获取它。我将处理程序配置为 Spring bean。我发现的所有示例基本上都复制了 Oracle 文档中的示例: https://docs.oracle.com/cd/E23943_01/web.1111/e13734/handlers.htm#WSADV170 :

      public boolean handleMessage(SOAPMessageContext messageContext)
{
Boolean outboundProperty = (Boolean)
messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);

if (outboundProperty.booleanValue()) {
System.out.println("\nOutbound message:");
} else {
System.out.println("\nInbound message:");
}

System.out.println("** Response: "+messageContext.getMessage().toString());
return true;
}

这里读取 SOAP 消息上下文的 boolean 属性之一,据我所知,它对应于请求或响应。​​

但是在我的实验中调试器永远不会进入与响应相对应的分支(else-branch)。这样的处理程序应该如何跟踪请求和响应?

我还想知道什么消息被读取为 messageContext.getMessage():是传入(请求)还是出站(响应)

我现在想知道是否确实可以通过实现handleMessage()方法来访问请求和响应?单个处理程序是否会拦截请求及其响应?我是否误解了这个例子?

还有... SOAPHandler - 它是每个请求(请求-响应对)的特定实例吗?谢谢

最佳答案

尝试一下 SoapHandler:

Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (isRequest) {
//handle request
} else {
//handle response
}

这是 LogicalHandler 的:

 Boolean outboundProperty = (Boolean)
messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
System.out.println("\nOutbound message:");
} else {
System.out.println("\nInbound message:");
}

关于java - 从 Java Soap 处理程序获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32713435/

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