联通彩E接入问题备忘

原创 2005年03月03日 10:10:00

首先要实现的是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进制的才能在错误表里面查到

只是自己备忘,写的很乱。呵呵

矩阵连乘(备忘录方法:自顶向下递归)

#include #include #include #include using namespace std; /* *矩阵连乘(备忘录方法:自顶向下递归) */ vector> m;//m[i]...
  • u011390632
  • u011390632
  • 2014年11月26日 19:53
  • 2346

用动态规划算法的变形方法——备忘录方法,解决0-1背包问题

使用备忘录方法解决0-1背包问题: 1.跟直接递归很相似,该算法能将递归遇到的子问题的解保存在一个表中,以便下一个递归遇到同样的子问题时快速求解。 2.为了区分一个子问题是否已经求解,可以通过查表...
  • qq_24059821
  • qq_24059821
  • 2016年05月04日 10:59
  • 2414

矩阵连乘的动态规划算法(包括递归的备忘录方法)

//矩阵连乘的动态规划算法 #include using namespace std; long MaxtrixChain1(int n); long MaxtrixChain1(int i,...
  • wujunqi11
  • wujunqi11
  • 2015年01月08日 14:14
  • 1286

e语言源码,事件提醒,记事备忘软件。

  • 2010年06月25日 21:13
  • 541KB
  • 下载

E6终极备忘:修复IE6下_25+_Bugs

E6终极备忘:修复IE6下_25+_Bugs 引言:“珍惜生命,远离IE 6!”       对IE6最好的策略就是不去兼容它。 好吧,我知道你的难处,你不得不去兼容IE6这个狗血的浏...
  • jiahong1219
  • jiahong1219
  • 2012年02月27日 16:33
  • 824

备忘--xcode9使用描述文件问题

在xcode9  取消自动托管选择手动设置描述文件,当选择原来xcode托管自动生成的描述文件进行打包,在进行编译时报出两个错误提示,导致该原因是xcode9之后当选择非托管模式,手动选择描述文件不允...
  • leo628
  • leo628
  • 2017年12月03日 13:08
  • 123

Android4.4 系统移植问题备忘

最近在基于Linux kernel 3.14的版本移植Android4.4系统,移植过程中遇到了很多问题,现在记录一下做个备忘: 1. init.rc无法解析     由于Android4.4系统加强...
  • wlwl0071986
  • wlwl0071986
  • 2016年04月21日 17:44
  • 1364

友盟反馈中发现的这样的问题,对下文没有考证,最终对2.3版本通过绕过Parserable 和 serializable方式解决的,留此只做备忘

OVERVIEW Sending a private serializable subclass as an Intent extra can crash many receivers. STEP...
  • yangdeli888
  • yangdeli888
  • 2015年02月09日 20:34
  • 3006

【小记备忘】IE11的插件兼容问题

【小记备忘】IE11的问题 欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611  今天碰到一个插件不能使用,仅在IE11下...
  • xinmuba
  • xinmuba
  • 2014年05月05日 12:16
  • 1182

真机测试ionic ios app问题备忘

系统版本:mac os x el capitan 10.11.6 ionic版本:2.0.0 很久没有开发ionic程序,今天把ionic升级并创建一个新的项目来测试真机运行,出现了以下问题 出现...
  • zimu002
  • zimu002
  • 2016年09月12日 19:03
  • 2017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:联通彩E接入问题备忘
举报原因:
原因补充:

(最多只允许输入30个字)