gpt4 book ai didi

java - SOAP 消息处理程序

转载 作者:行者123 更新时间:2023-12-01 09:35:45 25 4
gpt4 key购买 nike

我有一个 WSDL URL,用于使用 wsimpot 命令创建 Web 服务客户端
现在我想记录所有传入和传出的 XML
所以我想使用 SOAP 处理程序,但它不适用于此服务
但它适用于另一个服务客户端。所以我的问题是这是记录调用的正确方法,因为我需要记录所有参数并记录响应,或者还有其他方法。

为什么处理程序不与该客户端一起工作,但与其他客户端一起工作?

最佳答案

这取决于您如何实现处理程序 - 实现此类功能的正常方法只是添加一个处理程序链,类似于:

bindingProvider.getBinding().setHandlerChain(CollectionUtils.toList(new Handler[]{new SimpleHandler()}));

在 SimpleHandler 中(显然必须实现: SOAPHandler<SOAPMessageContext> ),您基本上会执行如下操作:

@Override
public boolean handleMessage(final SOAPMessageContext messageContext) {
if (messageContext == null) {
LOG.warning("The messageContext was nilled. Unable to handle the soapMessage.");
return false;
}
if (Boolean.FALSE.equals(messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) {
LOG.finest("Some cool incoming message");
} else {
LOG.finest("Some cool outgoing message");
}
return true;
}

bindingProvider前面提到过,您将从 WebService 本身的初始化开始。最有可能的是这样的:

final SomeCoolService someService = new SomeCoolService("my/path/to/service.wsdl", new QName(.., ..));
coolServicePort = remedyService.getCoolServicePort();
if (coolServicePort != null) {
final BindingProvider bindingProvider = (BindingProvider) coolServicePort;

在您的情况下,您添加的处理程序不起作用 - 它甚至在处理程序链的初始化期间被初始化吗?

记录这些内容的不太明显的方法是使用其他工具,例如 Wireshark,但是我怀疑这对您来说是否足够 - 除非您只想跟踪来回发送的任何内容。

关于java - SOAP 消息处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38953630/

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