问题标签 [soaphandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何使用自定义 SOAPHandler 正确格式化 SOAP 消息信封
我有一个实现SOAPHandler 接口的类。handleMessage 定义为:
这会生成以下消息:
问题是我需要生成以下格式的消息:
“mustUnderstand”属性没有soapenv前缀,sse:Security标签立即关闭,而不是将其他标签作为子标签,并且用户名的格式不正确
. 如何使用SOAPElement方法正确格式化消息?我需要知道的最重要的事情是如何正确地放置安全标签内的标签以及如何正确格式化用户名/密码标签。
我尝试了 addHeaderElement 和 addChildElement 方法的不同组合,但我无法正确格式化它,并且 javadocs 没有提供足够的详细信息来说明它们将生成什么。
java - 如何使用自定义 SOAPHandler 添加元素
这与上一个问题有关。我已经解决了主要问题,因为我已经更新了大部分代码,但我仍然有一个问题。如何让自定义 SOAPHandler 类向 SOAP 消息添加新元素?我需要在消息中添加用户名和密码。如果我使用:
我最终得到了标签关闭且未包含值的情况:
我想以如下格式结束用户名和密码:
如何获取包含在元素中的值(user1 和 1234)?
soap - 如何更改 javax.xml.rpc.handler.Handler.handleFault(MessageContext ctx) 中的响应肥皂消息
我为检查标头数据的 SOAP Web 服务编写了一个处理程序 (javax.xml.rpc.handler.Handler)。调用方法handleFault时如何修改响应消息?
谢谢。
java - WS操作执行后未调用SoapHandler
我有一个也使用 SOAP WS(在 doGet 中)的 servlet。我想查看 SOAP 信封(或肥皂消息中的任何其他内容)。我将此代码添加到我的 servlet 类中:
我是一个单独的班级,我有我的 TestHandler:
}
}
}
}
当我提出 WS 请求时,什么都没有打印出来。我什至不知道是否调用了处理程序。
如何查看 Handler 中定义的打印输出?
web-services - 使用 JAX-WS 客户端,如何从响应中获取 SOAP 标头?
使用 JAX-WS 客户端,如何从响应中获取 SOAP 标头?
我猜你可以使用 a 的handleMessage
方法来做到这一点SOAPHandler
,但我觉得我错过了一些更明显、更直接的方式。
servlets - 在soapMessageContext中获取“HttpServletRequest” - Axis Handler
我试图在 AxisHandler 的“handleMessage”方法中获取“HttpServletRequest”。我的 AxisHandler 实现了“SOAPHandler”,如下代码所示。
我需要在“InBoundDirection”中获取“HttpServletRequest”,但它返回“null”。
如何在 SOAPHandler 的“InBoundDirection”中获得“HttpServletRequest”?
谢谢..
web-services - 无法更改 SOAPFault 处理程序中的故障详细信息元素(在 handleFault 方法中)
我在 Websphere V8 上使用 JAX-WS Web 服务。当 WS 返回 SOAP 错误时,我想对详细元素进行一些更新。所以我创建了 SOAP 处理程序:
我可以更新故障消息,但客户端获取原始故障(更改之前)。但是当我打印更新的故障(在肥皂处理程序中)时,我可以看到更改(例如调用 msg.writeTo(System.out))。
任何线索为什么不将更新的故障返回给 ws 客户端?
谢谢
jax-ws - 添加带有肥皂消息的 Axis 2 肥皂处理程序
要求
需要调用具有 wsdl 的 web 服务,该服务不会通过浏览器打开。
我有一个 wsdl 文档,其中给出了一个虚拟端点。
一旦生成了存根类等,应在运行时更改端点。必须调用第三方方法,该方法将在 SOAP 消息中添加标头,此方法仅接受 SOAP 消息,必须从我们应该添加到流中的 SoapHandler 调用此方法。
我已经尝试过所有以下内容
Axis 2
该服务与 Axis2 配合良好,除了我只能访问处理程序中的 AxisMesage 而不能访问 SOAP 消息,因此我无法调用我的第三方方法失败的问题
Axis 1.4 服务运行良好,我可以访问 SOAP 消息,我可以使用它来调用第三方方法
Apache CXF、JAX-WS 等
由于 wsdl 不可用,如果我使用新的 wsdl 端点初始化服务类,或者如果我通过 bindingProvider 设置端点,则会引发异常,因此我无法调用服务。
问题
由于 Axis 1.4 很旧,因此普遍认为远离它。
Axis 2 很好,除了 AxisMessage 问题,有没有办法在我添加到 Axis 的处理程序中访问 SoapMessage。我能够添加的处理程序只是 Axis2 处理程序
在 CXF 和 JAX-WS 中,我可以添加我有 SoapMessage 的通用处理程序,但是当服务类被初始化或使用 BindingProvider 设置时它们会失败
任何建议
谢谢
查理
java - 使用 SOAPHandler 时 MTOM 不工作
我尝试使用 Mtom 传输文件,在我使用 SoapHandler 验证客户端签名之前它运行良好。SoapHandler 保留所有消息并将其更改为 base64 编码。因此,当我尝试获取大文件时,Jvm 会引发堆大小异常。你们知道有什么方法可以解决这个问题吗?
java - 如何将数据从 SOAP 处理程序传回 Web 服务客户端?
(跟进这个问题:Getting raw XML response from Java web service client)
我有一个 SOAP 消息处理程序,它能够获取 Web 服务响应的原始 XML。我需要将此 XML 放入 Web 服务客户端,以便在发送响应之前对响应执行一些 XSL 转换。我无法找到一种从 SOAP 处理程序获取数据的好方法,该处理程序捕获传入的消息,并使原始 XML 可用于生成的(来自 WSDL)Web 服务客户端。如果这甚至可行,有什么想法吗?
我想出了这样的事情:
在非常简单的测试中,这似乎有效。但这个解决方案有点像廉价的黑客攻击。我不喜欢将原始 XML 设置为链处理程序的成员,而且我直觉这违反了许多其他最佳实践。有没有人有更优雅的方式来做到这一点?