📄 headersetter.java
字号:
package com.hxyh.sanny.mms.telecom.soap;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.client.ServiceClient;
public class HeaderSetter
{
protected static final String nameSpace = "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1";
protected static final String SOAPHEADER_SPID = "spId";
protected static final String SOAPHEADER_SPPASSWORD = "spPassword";
protected static final String SOAPHEADER_TIMESTAMP = "timeStamp";
protected static final String SOAPHEADER_PRODUCTID = "productId";
protected static final String SOAPHEADER_TRANSID = "transactionId";
protected static final String SOAPHEADER_TRANS_END = "transEnd";
protected static final String SOAPHEADER_LINKID = "linkId";
protected static final String SOAPHEADER_OA = "OA";
protected static final String SOAPHEADER_FA = "FA";
protected static final String SOAPHEADER_MULTI_CASTMEG = "multicastMessaging";
protected static final String SOAPHEADER_RequestIndetifier = "RequestIndetifier";
protected static final String SOAPHEADER_RequestSOAPHeader = "RequestSOAPHeader";
protected static final String SOAPHEADER_NotifySOAPHeader = "NotifySOAPHeader";
//定义SP登陆参数
protected static String spId = "22220001";
protected static String spPassword = "123456";
protected static String productId = "2222";
protected static String transactionId = "12345678901234567890";
protected static String linkID = "12345123451234512345";
public void setLinkID(String linkID) {
this.linkID = linkID;
}
public void setProductId(String productId) {
this.productId = productId;
}
public void setSpId(String spId) {
this.spId = spId;
}
public void setSpPassword(String spPassword) {
this.spPassword = spPassword;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public void setAOMTSoapHeader(ServiceClient serviceClient)
{
//SOAPHeader字段赋值
String timeStamp = "";
String transEnd = "-1";
String OA = "tel:8613907550011";
String FA = "tel:8613907550011";
String multi_castMessaging = "false";
//获取当前时间作为时间戳(MMddHHmmss)
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
timeStamp = sdf.format(date);
try
{
//获取AXIOM的对象工厂
OMFactory fac = OMAbstractFactory.getOMFactory();
SOAPFactory sfac = OMAbstractFactory.getSOAP11Factory();
//创建名字空间NameSpace
OMNamespace omNs = fac.createOMNamespace(nameSpace, "tns");
//创建RequestSOAPHeader
SOAPHeaderBlock block_RequestSOAPHeader = sfac.createSOAPHeaderBlock(
SOAPHEADER_RequestSOAPHeader, omNs);
//设置spId
SOAPHeaderBlock block_spId = sfac.createSOAPHeaderBlock(SOAPHEADER_SPID, omNs);
block_spId.addChild(sfac.createOMText(spId));
//设置spPassword: 由spId+spPassword+timeStamp作MD5加密
String md_password = md5Digest(spId, spPassword, timeStamp);
SOAPHeaderBlock block_spPassword = sfac.createSOAPHeaderBlock(SOAPHEADER_SPPASSWORD, omNs);
block_spPassword.addChild(sfac.createOMText(md_password));
//设置timeStamp
SOAPHeaderBlock block_timeStamp = sfac.createSOAPHeaderBlock(SOAPHEADER_TIMESTAMP, omNs);
block_timeStamp.addChild(sfac.createOMText(timeStamp));
//设置productId
SOAPHeaderBlock block_productId = sfac.createSOAPHeaderBlock(SOAPHEADER_PRODUCTID, omNs);
block_productId.addChild(sfac.createOMText(productId));
//设置transactionId
SOAPHeaderBlock block_transid = sfac.createSOAPHeaderBlock(SOAPHEADER_TRANSID, omNs);
block_transid.addChild(sfac.createOMText(transactionId));
//设置transEnd
SOAPHeaderBlock block_transend = sfac.createSOAPHeaderBlock(SOAPHEADER_TRANS_END, omNs);
block_transend.addChild(sfac.createOMText(transEnd));
//设置linkId
SOAPHeaderBlock block_linkId = sfac.createSOAPHeaderBlock(SOAPHEADER_LINKID, omNs);
block_linkId.addChild(sfac.createOMText(linkID));
//设置OA
SOAPHeaderBlock block_OA = sfac.createSOAPHeaderBlock(SOAPHEADER_OA, omNs);
block_OA.addChild(sfac.createOMText(OA));
//设置FA
SOAPHeaderBlock block_FA = sfac.createSOAPHeaderBlock(SOAPHEADER_FA, omNs);
block_FA.addChild(sfac.createOMText(FA));
//设置multiMessaging
SOAPHeaderBlock block_multiMessaging = sfac.createSOAPHeaderBlock(SOAPHEADER_MULTI_CASTMEG, omNs);
block_multiMessaging.addChild(sfac.createOMText(multi_castMessaging));
//将字段 spId,spPassword,timeStamp,productId,transactionId,transEnd,linkId,OA,FA,multiMessaging
//作为RequestSOAPHeader的子节点
block_RequestSOAPHeader.addChild(block_spId);
block_RequestSOAPHeader.addChild(block_spPassword);
block_RequestSOAPHeader.addChild(block_timeStamp);
block_RequestSOAPHeader.addChild(block_productId);
block_RequestSOAPHeader.addChild(block_transid);
block_RequestSOAPHeader.addChild(block_transend);
block_RequestSOAPHeader.addChild(block_linkId);
block_RequestSOAPHeader.addChild(block_OA);
block_RequestSOAPHeader.addChild(block_FA);
block_RequestSOAPHeader.addChild(block_multiMessaging);
serviceClient.addHeader(block_RequestSOAPHeader);
System.out.println(block_RequestSOAPHeader.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
//MD5摘要
private static String md5Digest(String spId, String spPassword, String timeStamp)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(spId.getBytes());
md.update(spPassword.getBytes());
md.update(timeStamp.getBytes());
byte[] b = md.digest();
String result = "";
String temp = "";
//取摘要的前16字节
for (int i = 0; i < 16; i++)
{
temp = Integer.toHexString(b[i] & 0xFF);
if (temp.length() == 1)
temp = "0" + temp;
result += temp;
}
//MD5密码转换为大写
result = result.toUpperCase();
System.out.println("MD5 Password : " + result);
return result;
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
return null;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -