⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headersetter.java

📁 彩信网关程序,SP程序,包含移动彩信代码和电信彩信代码!供学习之用
💻 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 + -