【问题标题】:Org.Apache.Axis set HTTPHeaderorg.Apache.Axis 设置 HTTPHeader
【发布时间】:2014-09-23 06:24:28
【问题描述】:

目前我面临的问题是我需要将自定义 HTTP 标头添加到 org.apache.axis.client.Call。但我能找到的关于如何做到这一点的只是添加 SOAP 标头,但这不是我想要的。

添加一个简单的SOAPHeader 会很容易:

SOAPHeaderElement header = new SOAPHeaderElement(new javax.xml.namespace.QName("SessionID"), sessionId);
        _call.addHeader(header);

但是我可以为HTTPHeaders 做一些类似的事情吗?

非常感谢。

【问题讨论】:

    标签: java soap axis


    【解决方案1】:

    我使用eclipse的向导生成我的客户端,所以我解决了我的问题,扩展了我的服务定位器上的方法

    @Override
    public Call createCall() throws ServiceException {
        _call = new org.apache.axis.client.Call(this) {
    
            @Override
            public void setRequestMessage(Message msg) {
                super.setRequestMessage(msg);
    
                MimeHeaders mimeHeaders = msg.getMimeHeaders();
                mimeHeaders.addHeader("SessionID", SessionID);
    
    
            }
    
        };
    
        return _call;
    }
    

    【讨论】:

      【解决方案2】:

      已在以下网址进行了解释:
      http://www.coderanch.com/how-to/java/WebServicesHowTo

      MessageContext msgContext = _call.getMessageContext();
      MimeHeaders hd = msgContext.getMessage().getMimeHeaders();
      hd.addHeader("SessionID", sessionId);
      

      【讨论】:

      • 这个实现的问题是我没有 SOAPMessage 所以我不能使用这个。您是否有其他解决方案只能使用 org.apache.axis.client.Stub?
      • 我明白了,然后尝试查看处理程序? docs.oracle.com/cd/E13222_01/wls/docs103/webserv_adv/…
      • 我根据上面的链接找到了另一种方法。我会编辑你的答案:)
      • 感谢它帮助我获得了在任何地方发表评论的特权:)
      【解决方案3】:

      只是想补充。这对我有用:

      ((Stub) service)._setProperty(Call.SESSION_MAINTAIN_PROPERTY, new Boolean(true));
      ((Stub) service)._setProperty(HTTPConstants.HEADER_COOKIE, "AuthToken=abc123");
      

      【讨论】:

      • 谢谢,这是唯一对我有用的解决方案。
      猜你喜欢
      • 2020-05-08
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多