分享
 
 
 

JBuilder在中文环境中光标问题的解决方案

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

联通彩e接口开发

前段时间开发联通彩e接口,期间碰到很多问题,在朋友的帮助和自己的摸索中总算完成了接口的开发。 在sp联盟论坛上也见到许多同行各种各样的问题,因此将开发细节整理成文,希望能给与我当初一样 困扰的人以帮助。 第一次接触彩e,感觉有点无从下手,接口指南几百页之多,我在开发的时候不知道联通提供测试的接入 平台以供调试,而是对着接口规范编写代码,然后模拟接口规则生成数据,这些都是在单元测试中完成 的,到接入uni-wise测试环境时,问题多多。

--------------------------------------------------------------------------------

目录

概述

1. SSO接口

1.1. 传输安全

1.2. 生成请求票根

1.3. 解析响应票根

2. 预定接口

2.1. 发起预定请求

2.2. 解析uni-wise预定请求

2.3. 验证请求

2.4. 响应预定请求

3. 预定取消接口

3.1. 发起取消请求

3.2. 解析uni-wise取消请求

3.3. 验证请求

3.4. 响应请求

4. web push接口

4.1. 提交push

概述

本文以Java语言为例,讲述彩e接口开发的点滴。参考的接口指南为《中国联通增值业务综合治理及接入平台SP接口规范v1.2》, 文中代码均经过测试,且与uni-wise平台能正常运行。彩e与sp接口包括:sso接口、预定接口、取消接口、彩e push接口,取 消push接口,查询push接口、wap push接口。文中除了wap push接口,其余的将会一一介绍。 彩e接口的开发其实就是sp与联通uni-wise平台之间的通信,uni-wise平台是以web方式工作,因此与sp的交互大部分通 过http+XML协议传输。 笔者在开发的过程中也曾用C#写过彩e的部分接口代码,如有此需求,我也将整理成文。

第 1 章 SSO接口

SSO 是 Single sign on的缩写,即单点登录,彩e接口中实现的功能是,用户在uni-wise平台或sp平台只需登录一次,即可 访问相关资源。通过cookies机制实现。

1.1. 传输安全

出于安全考虑,网络的传输中经常对传输数据做加密和编码处理,彩e接口开发中的一个要害点也是对加密解密的代码编写。 其中涉及以下几种:

1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.security.MessageDigest包中。

2、3-DES加密,该加密算法是可逆的,解密方可以通过与加密方约定的密钥匙进行解密。相关类包含在javax.crypto.*包中。

3、base64编码,是用于传输8bit字节代码最常用的编码方式。相关类在sun.misc.BASE64Decoder 和sun.misc.BASE64Encoder 中。

4、URLEncoder编码,是一种字符编码,保证被传送的参数由遵循规范的文本组成。相关类在java.net.URLEncoder包中。

1.2. 生成请求票根

当用户从SP平台向uni-wise发起登录请求时,SP平台需要生成一个合法的票根,以http协议传输给uni-wise平台。 生成请求票根的规则是:SPTicketRequestValue = URLEncoding{UNICODE(SPCode +“$”)+ Base64 [Encrypt (UNICODE(Seed + “$”)+ Digest)]}

1、生成Seed: returnUrl + "$" + timeStamp;returnUrl为登录成功后接收uni-wise的响应票根链接。timeStamp为生成的 时间戳。

例 1.1. TimeStamp实现代码

public String getTimeStamp()

{

Calendar cal=Calendar.getInstance();

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss.SSS");

String timeStamp=formatter.format(cal.getTime());

return timeStamp;

}

2、生成Digest :Base64{Hash[UNICODE(SPCode +"$"+ Seed + "$" + SPKey)]},其中Hash算法采用md5

例 1.2. Digest的实现代码

public String getDigest(String strSrc)

{

//String strSrc = spCode + "$" + getSeed() + "$" + spKey;

BASE64Encoder base64en = new BASE64Encoder();

String digest="";

try

{

byte[] srcMD5 = md5Encrypt(strSrc);

digest = base64en.encode(srcMD5); (1)

}

catch(Exception e){

e.printStackTrace();

}

return digest;

}

private byte[] md5Encrypt(String strSrc)

{

byte[] returnByte = null;

try

{

MessageDigest md5 = MessageDigest.getInstance("MD5"); (2)

returnByte = md5.digest(strSrc.getBytes("GBK"));

}

catch(Exception e)

{

e.printStackTrace();

}

return returnByte;

}

(1) 用base64编码

(2) 指定加密方式为md5

3、生成密钥匙,用联通提供的key,进行md5加密。

例 1.3. 得到3-DES的密钥匙

private byte[] getEnKey(String spKey)

{

byte[] desKey=null;

try

{

byte[] desKey1 = md5Encrypt(spKey);

desKey = new byte[24];

int i = 0;

while (i < desKey1.length && i < 24) {

desKey[i] = desKey1[i];

i++;

}

if (i < 24) { (1)

desKey[i] = 0;

i++;

}

}

catch(Exception e){

e.printStackTrace();

}

return desKey;

}

(1) 根据接口规范,密钥匙为24个字节,md5加密出来的是16个字节,因此后面补8个字节的0

4、生成SPTicketRequestValue,URLEncoding{UNICODE(SPCode +“$”)+ Base64 [Encrypt (UNICODE(Seed + “$”)+ Digest)]}, Encrypt算法采用3-DES加密,用md5加密的key作为密钥匙。

例 1.4. 3-DES加密的实现代码

public String getSPTicketRequestValue()

{

String SPTicketRequestValue="";

try{

byte[] src = (getSeed() + "$" + getDigest() ).getBytes("UTF-16LE");

byte[] enKey = getEnKey(spKey);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有