Java Axis 1.4如何修改soap信封属性?

Java Axis 1.4如何修改soap信封属性?,java,web-services,axis,jax-rpc,Java,Web Services,Axis,Jax Rpc,这是我要发送给服务部的信封: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ger="http://www.more.com.br/MC/Geral" xmlns:num="http://www.more.com.br/SN/Numero"> 如何使用Axis 1.4实现这一点 我需要修改名称空间 我正在使用JDK1.5,因为我在任何地方都找不到这个答案,下面是

这是我要发送给服务部的信封:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ger="http://www.more.com.br/MC/Geral" xmlns:num="http://www.more.com.br/SN/Numero">

如何使用Axis 1.4实现这一点

我需要修改名称空间


我正在使用JDK1.5,因为我在任何地方都找不到这个答案,下面是我如何使用Axis1.4实现的

首先,您需要创建一个处理程序类来修改SOAP信封。此处理程序必须扩展BasicHandler

公共类AxisClientEnvelopeHandler扩展了BasicHandler{
@凌驾
public void invoke(MessageContext-msgContext)抛出AxisFault{
试一试{
//获取soap头
SOAPMessageContext smc=(SOAPMessageContext)msgContext;
SOAPMessage=smc.getMessage();
SOAPEnvelope信封=message.getSOAPPart().getEnvelope();
//摆弄名称空间
envelope.addNamespaceDeclaration(“您的命名空间”);
}捕获(SOAPE例外){
e、 printStackTrace();
}
}
}
然后必须将此处理程序添加到SOAP调用中。这是通过在服务定位器上设置一些属性来实现的

// Add Handler to Axis SOAP calls
SimpleProvider clientConfig = new SimpleProvider();
AxisClientEnvelopeHandler envelopeHandler = new AxisClientEnvelopeHandler();
SimpleChain reqHandler = new SimpleChain();
SimpleChain respHandler = new SimpleChain();
reqHandler.addHandler(envelopeHandler);
Handler pivot = new HTTPSender();
Handler transport = new SimpleTargetedChain(reqHandler, pivot, respHandler);
clientConfig.deployTransport(HTTPTransport.DEFAULT_TRANSPORT_NAME, transport);
locator.setEngineConfiguration(clientConfig);
locator.setEngine(new AxisClient(clientConfig));

之后,您可以进行调用,SOAP信封将根据您的处理程序进行修改。

Axis 1.4非常古老,在许多方面与Axis 2或CXF相比都不灵活。有没有可能切换框架?Axis2在JDK1.5或JDK1.4中运行?我将此MessageContext消息设置为call.getMessageContext();SOAPMessage SOAPMessage=message.getMessage();SOAPPart sp=(SOAPPart)soapMessage.getSOAPPart();//SOAPPart sp=(SOAPPart)mess.getSOAPPart();SOAPEnvelope环境=(SOAPEnvelope)sp.getEnvelope();环境添加名称空间声明(“ger”);如果您使用的是JDK1.5,您应该能够移动到Axis2或CXF。好的,谢谢,我将尝试。。。