请教xfire 服务端怎么在返回给客户端的报文上增加soapheader信息
请问xfire 服务端如何在返回给客户端的报文上增加soapheader信息
大家好, 如题目那样 , 服务端怎么在返回报文设置header 信息呢
<soapenv:Header>
<Esb soapenv:actor="" soapenv:mustUnderstand="0">
<Route>
<Time>2011-09-23 11:51:08.124</Time>
<EsbId>b15ff61a22ea4572911675a86f90629e</EsbId>
</Route>
</Esb>
</soapenv:Header>
例如这些。
------解决方案--------------------
先编写服务端验证类继承 AbstractHandler
Client 发送授权信息
大家好, 如题目那样 , 服务端怎么在返回报文设置header 信息呢
<soapenv:Header>
<Esb soapenv:actor="" soapenv:mustUnderstand="0">
<Route>
<Time>2011-09-23 11:51:08.124</Time>
<EsbId>b15ff61a22ea4572911675a86f90629e</EsbId>
</Route>
</Esb>
</soapenv:Header>
例如这些。
------解决方案--------------------
先编写服务端验证类继承 AbstractHandler
package test;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
public class AuthenticationHandler extends AbstractHandler {
public void invoke(MessageContext cfx) throws Exception {
if(cfx.getInMessage().getHeader() == null)
{
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",org.codehaus.xfire.fault.XFireFault.SENDER);
}
Element token=cfx.getInMessage().getHeader().getChild("AuthenticationToken");
if (token == null)
{
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息", org.codehaus.xfire.fault.XFireFault.SENDER);
}
String username = token.getChild("Username").getValue();
String password = token.getChild("Password").getValue();
try
{
//进行身份验证 ,只有abcd@1234的用户为授权用户
if(username.equals("abcd") && password.equals("1234"))
//这语句不显示
System.out.println("身份验证通过");
else throw new Exception();
}
catch (Exception e)
{
throw new org.codehaus.xfire.fault.XFireFault("非法的用户名和密码", org.codehaus.xfire.fault.XFireFault.SENDER);
}
}
}
Client 发送授权信息
package test;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
public class ClientAuthenticationHandler extends AbstractHandler {
private String username = null;
private String password = null;
public ClientAuthenticationHandler() {
}
public ClientAuthenticationHandler(String username,String password) {
this.username = username;
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void invoke(MessageContext context) throws Exception {
//为SOAP Header构造验证信息
Element el = new Element("header");