soap客户端请求包异常

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
 faultActor:
 faultNode:
 faultDetail:
 {http://xml.apache.org/axis/}hostname:y45980nj287

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
 at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
 at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
 at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
 at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
 at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
 at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
 at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
 at org.apache.axis.client.Call.invoke(Call.java:2767)
 at org.apache.axis.client.Call.invoke(Call.java:2443)
 at org.apache.axis.client.Call.invoke(Call.java:2366)
 at org.apache.axis.client.Call.invoke(Call.java:1812)
 at axisspring.soap.InterchangeDataServiceSoapBindingStub.getMonthInterchange(InterchangeDataServiceSoapBindingStub.java:106)
 at com.huawei.util.Util.main(Util.java:25)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 Java 提供的 Handler 机制可以在客户SOAP 请求注入 Header。以下是一个示例代码: ```java // 创建一个 SOAP 消息处理程序 public class MySOAPHandler implements SOAPHandler<SOAPMessageContext> { @Override public boolean handleMessage(SOAPMessageContext context) { // 获取是否为请求消息 Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (isRequest) { try { // 获取 SOAP 消息 SOAPMessage soapMsg = context.getMessage(); // 获取 SOAP 头部 SOAPHeader header = soapMsg.getSOAPHeader(); if (header == null) { header = soapMsg.getSOAPPart().getEnvelope().addHeader(); } // 创建一个 SOAP 头部元素 QName qname = new QName("http://example.com", "MyHeader", "my"); SOAPHeaderElement headerElement = header.addHeaderElement(qname); // 设置 SOAP 头部元素的值 headerElement.setValue("MyHeaderValue"); } catch (SOAPException e) { // 异常处理 } } return true; } // 其他方法省略 } ``` 然后,在客户调用 Web 服务时,将该处理程序添加到 Handler 链中: ```java // 创建一个服务 URL wsdlUrl = new URL("http://example.com/MyService?wsdl"); QName serviceName = new QName("http://example.com", "MyService"); Service service = Service.create(wsdlUrl, serviceName); // 获取服务点 QName portName = new QName("http://example.com", "MyPort"); MyPortType port = service.getPort(portName, MyPortType.class); // 创建一个处理程序链 BindingProvider bp = (BindingProvider) port; List<Handler> handlerChain = bp.getBinding().getHandlerChain(); handlerChain.add(new MySOAPHandler()); bp.getBinding().setHandlerChain(handlerChain); // 调用 Web 服务 port.myMethod(); ``` 这样,在客户调用 Web 服务时,SOAP 请求就会自动添加一个名为 MyHeader 的 Header 元素,值为 MyHeaderValue。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值