zSy*_*sis 1 java web-services jax-ws
我有一个程序,我在其中调用 jax-ws wsimport 函数生成的代码。它看起来是这样的:
HolidayService2 service = new HolidayService2();
HolidayService2Soap proxy = service.getHolidayService2Soap();
ArrayOfCountryCode countries = proxy.GetCountriesAvailable("USA");
Run Code Online (Sandbox Code Playgroud)
proxy.GetCountriesAvailable 方法调用 Web 服务并返回国家/地区代码数组。有什么方法可以在我的应用程序中显示原始肥皂响应吗?
谢谢你的帮助
您可以使用数据包嗅探程序或基于代理的程序。
Fiddler是一个很棒的基于代理的程序,或者有JAX-WS WSMonitor工具。
对于数据包嗅探:Wireshark
要访问SOAPMessage
,您实际上需要创建一个实现该javax.xml.ws.handler.soap.SOAPHandler
接口的类:
public class MySoapHandler implements SOAPHandler<SOAPMessageContext>
{
@Override
public Set<QName> getHeaders ()
{
...
}
@Override
public boolean handleMessage (final SOAPMessageContext context)
{
...
}
@Override
public boolean handleFault (final SOAPMessageContext context)
{
...
}
@Override
public void close (final MessageContext context)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
并将其添加到您的服务绑定的处理程序链中:
final BindingProvider bindingProvider = (BindingProvider) proxy;
final Binding binding = bindingProvider.getBinding ();
final List<Handler> handlerChain = binding.getHandlerChain ();
handlerChain.add (new MySoapHandler ());
binding.setHandlerChain (handlerChain);
Run Code Online (Sandbox Code Playgroud)
神奇的事情发生在自定义处理程序的handleMessage
/方法中。handleFault
一旦你有了 a,SOAPMessageContext
你就可以调用该getMessage
方法,它将返回你的一个实例javax.xml.soap.SOAPMessage
。SOAPMessage
是原始肥皂包的对象表示。从这里您应该能够根据您的目的重建 XML 结构。
归档时间: |
|
查看次数: |
3447 次 |
最近记录: |