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

标签 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 实现此目的

我需要修改命名空间!

我使用的是 JDK 1.5

最佳答案

由于我在任何地方都找不到这个答案,因此以下是我使用 Axis 1.4 实现的方法。

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

public class AxisClientEnvelopeHandler extends BasicHandler {

    @Override
    public void invoke(MessageContext msgContext) throws AxisFault {

        try {
            // get the soap header
            SOAPMessageContext smc = (SOAPMessageContext) msgContext;
            SOAPMessage message = smc.getMessage();
            SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();

            // fiddle with the namespaces
            envelope.addNamespaceDeclaration("YOUR NAMESPACE");

        } catch (SOAPException e) {
            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));

之后,您可以调用 make 您的调用,并且 SOAP Envelope 将根据您的处理程序进行修改。

关于java - Axis 1.4 如何修改soap信封属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072295/

相关文章:

java - Axis 1.4 : cannot get SOAP request to work

java - 使用 GraphHopper 查找路线上的点

android - 如何将 JSON 数据作为参数从 Android 发送到 Jersey RESTful 服务

java - jps 进程作为 root 用户不可用

java - 如何将 Soap 消息发送到 activemq 队列?

c# - 错误 403 : Forbidden. 客户端身份验证方案 'Anonymous' 禁止 HTTP 请求

java - Axis Java Web 服务 : connect to database on startup

java - 在 jboss 中禁用 Axis log4j 日志记录

java - 如何在Web服务启动时加载方法

java - 将 Vaadin CheckBox 保存到 JPA 的正确方法是什么?