联通彩E接入问题备忘
来源:互联网 发布:win7 access数据库 编辑:程序博客网 时间:2024/04/29 16:01
首先要实现的是SSO接口,重点是加密。参考csdn上的文章,很快就可以了,
注意的是在3DES后再用Base编码回产生多余的回车换行,去掉他们再URLEncoder
写加密的时候顺便把解密也写了,等会push的时候要用来取TaskID
然后是push了,push的流程是sp->联通->亚信,其中联通只是验证包头部分。然后把包体提交给亚信。
如果包体格式不对的话,push返回错误代码也是0,但是手机收不到信息。
包头的加密就用SSO中现成的,包体用MimeMessage构造。这个是javamail的一个类。
连接用HttpURLConnection,
public void connectUrl(String strUrl)
{
try
{
url = new URL("http", "pushservice.uni-wise.com", 80,
"/imappushsubmit.aspx");
hconn = (HttpURLConnection) url.openConnection();
hconn.setRequestMethod("POST");
hconn.setDoOutput(true);
hconn.setDoInput(true);
}
catch (Exception ex)
{
System.out.println(ex);
}
}
构建包体
private void setMimeMessage()
{
try
{
Properties props = new Properties();
ServerIP = "smtp.sina.com.cn";
System.out.println(ServerIP);
props.put("mail.smtp.host", ServerIP);
Session session = Session.getInstance(props, null);
session.setDebug(true);
mime = new MimeMessage(session);
mime.setFrom(new InternetAddress("cheng_shiyong@yahoo.com.cn",new String(strFrom.getBytes("ISO8859_1"),"GB2312"),"GB2312"));
mime.addRecipient(javax.mail.Message.RecipientType.TO,
new InternetAddress(strTo));
mime.setSubject(new String(strSubject.getBytes("ISO8859_1"),"GB2312"), "GB2312");
mime.setSentDate(new java.util.Date());
mime.setContent(getMimeMultipart());
}
catch (Exception ex)
{
System.out.println("MME.Push.setMimeMessage Error" + ex);
}
}
private MimeMultipart getMimeMultipart()
{
MimeMultipart mimeMultipart = new MimeMultipart();
MimeBodyPart mimeBodyPart = new MimeBodyPart();
try
{
mimeBodyPart.setText(new String(mimeBodyText.getBytes("ISO8859_1"),"GB2312"), "GB2312");
mimeMultipart.addBodyPart(mimeBodyPart);
Vector filePathes = getFilePaths();
for (int i = 0; i < filePathes.size(); i++)
{
String filePath = (String) filePathes.get(i);
javax.activation.DataSource datasource = new javax.activation.
FileDataSource(filePath);
MimeBodyPart mimeFile = new MimeBodyPart();
mimeFile.setHeader("Content-Transfer-Encoding", "base64");
mimeFile.setDataHandler(new javax.activation.DataHandler(datasource));
mimeFile.setFileName( (new File(filePath)).getName());
mimeMultipart.addBodyPart(mimeFile);
}
}
catch (Exception e)
{
System.out.println("MME.Push.getMimeMultipart Error" + e);
}
return mimeMultipart;
}
发送信息用
MimeMessage.writeTo(hconn.getOutputStream());
读取联通返回信息
BufferedReader rd = new BufferedReader(new InputStreamReader(hconn.
getInputStream()));
for (String line = null; (line = rd.readLine()) != null; )
{
sb.append(line);
}
中间遇到过jaf 报不支持 multipart/mixed类型的错误。造成这个错误的原因是同时有多个mail包存在在系统里面,解决方式是把jaf和mail两个包都放在WEB-INF/lib下面。删除掉其他地方的副本。
另外联通返回的包里面的错误代码是10进制的,要转换成16进制的才能在错误表里面查到
只是自己备忘,写的很乱。呵呵
- 联通彩E接入问题备忘
- 联通彩e接口开发
- 联通彩e接口开发
- 联通彩e接口开发(转)
- 联通sgip1.2接入笔记
- 联通彩e接口开发_java讲解(1)
- 联通彩e接口开发_java讲解(2)
- Android支付接入(四):联通支付
- cocos2dx android工程接入联通Unipay sdk
- cocos2dx android工程接入联通Unipay sdk
- E-R图备忘
- 编码问题“联通”
- 城市联通问题
- 问题备忘
- 问题备忘
- 接入金融理财H5活动遇到的问题备忘(防截屏,检查ROOT,金融理财h5安全,混淆不回调)
- 所有移动联通香港运营商接入点以及代理
- 移动联通电信wap和net接入点判断
- 中国软件市场呈六大发展趋势
- 英语六级成绩60.5顺利通过,庆祝ing。
- 留言本
- 普诺玛
- 将文件从本地机拷贝到远程
- 联通彩E接入问题备忘
- 增强Web的安全性
- IT项目成功的7大领导策略
- windows2000升级惊魂
- JAVA与正则表达式(一年级)
- SIP主要信令与扩展功能
- 修炼到家
- 制作基于软盘的Linux系统
- 无线射频识别技术(RFID)