目前,我遇到了需要向org.apache.axis.client.Call
添加自定义HTTP标头的问题。但是我能找到的关于如何做到这一点就像添加SOAP Headers一样,但这不是我想要的。
添加简单的SOAPHeader
很简单:
SOAPHeaderElement header = new SOAPHeaderElement(new javax.xml.namespace.QName("SessionID"), sessionId);
_call.addHeader(header);
但我可以为HTTPHeaders
做一些类似的事情吗?
非常感谢。
答案 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");