Org.Apache.Axis设置HTTPHeader

时间:2014-09-23 06:24:29

标签: java soap axis

目前,我遇到了需要向org.apache.axis.client.Call添加自定义HTTP标头的问题。但是我能找到的关于如何做到这一点就像添加SOAP Headers一样,但这不是我想要的。

添加简单的SOAPHeader很简单:

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

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

非常感谢。

3 个答案:

答案 0 :(得分:3)

我使用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;
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

只想添加。这对我有用:

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