新收集的WAPPUSH代码,并经过改造(java版)

原创 2007年09月24日 09:29:00
 package com.wap;

import java.io.IOException;
import java.sql.Date;


public class WapPush
{

 
 public int sendSMS(String[] mobile_nos, byte[] msg)
 {
。。。。
  return 0;
 }

 public static String getSMSPush(String url, String subject, String startTime,
          String endTime)
 {
  String pushString = "";
  String body = "";
  body += "02";
  body += "05"; //-//WAPFORUM//DTD SI 1.0//EN
  body += "6A"; //UTF-8
  body += "00"; //字符串结�?
  body += "45"; //<si>
  body += "C6"; //<indication
  body += "08"; //<action=signal-high>
  body += "0C"; //href="http://
  body += "03"; //字符串开�?
  body += byteArrayToHexString(url.getBytes()); //实际地址
  body += "00"; //字符串结�?
  body += "0A"; //created=
  body += "C3"; //'时间
  body += "07"; //时间字节�?
  body += startTime; //YYYYMMDDHHMMSS
  body += "10"; //si_expires=
  body += "C3"; //时间
  body += "07"; //时间字节�?
  body += endTime; //YYYYMMDDHHMMSS
  body += "01"; //>
  body += "03"; //字符串开�?
  try
  {
   body += byteArrayToHexString(subject.getBytes("utf-8")); //显示给用户的内容,用utf-8编码。utf-8编码,英文字符直接用ascii码;中文如果unicode是(二进制)
  }
  catch (Exception ex)
  {
  }
  body += "00"; //字符串结�?
  body += "01"; //</indication>"
  body += "01"; //'</si>
  int length = body.length();
  String pud = "";
  pud += "81"; //transaction id (connectionless WSP)
  pud += "06"; //'pdu type (06=push)
  pud += "06"; //Headers len
  pud += "03";
  pud += "AE";
  pud += "81";
  pud += "EA"; //content type: application/vnd.wap.sic; charset=utf-8
  pud += "8D"; //content-length
  pud += Integer.toHexString(length).toUpperCase();
  String udh = "";
  udh += "06"; //User Data Header Length (6 bytes)
  udh += "05"; //UDH Item Element id (Port Numbers)
  udh += "04"; //UDH IE length (4 bytes)
  udh += "0B";
  udh += "84"; //destination port number
  udh += "23";
  udh += "F0"; //origin port number
  pushString = udh + pud + body;
  System.out.println(pushString);
  return pushString;
 }
 
 public static String byteArrayToHexString(byte b[])
 {
  String result = "";
  for (int i = 0; i < b.length; i++)
   result = result + byteToHexString(b[i]);
  return result;
 }

 public static String byteToString(byte b[])
 { 
  String result = "";
  for (int i = 0; i < b.length; i++)
  {
   result = result + b[i];
  }
  return result;
 }

 public static String byteToHexString(byte b)
 {
  int n = b;
  if (n < 0)
   n = 256 + n;
  int d1 = n / 16;
  int d2 = n % 16;
  return HexCode[d1] + HexCode[d2];
 }

 private static String HexCode[] =
 {
  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
  "A", "B", "C", "D", "E", "F"
 };

 private static String getUTFString(final String gbString)
 {
  if (gbString == null)
   return "";
  char[] utfBytes = gbString.toCharArray();
  String unicodeBytes = "";
  for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++)
  {
   String hexB = "";
   if (utfBytes[byteIndex] < '!')
   {
    hexB = Integer.toHexString(utfBytes[byteIndex]);
    if (hexB.length() <= 2)
    {
     hexB = "00" + hexB;
    }
    unicodeBytes = unicodeBytes + "&#x" + hexB + ";";
   }
   else
   {
    unicodeBytes += utfBytes[byteIndex];
   }
  }
  return unicodeBytes;
 }
 
 public static int StringToByte(String str)
 {
  int ret = 0;
  for(int i=0;i<HexCode.length;i++)
  {
   if(HexCode[i].equalsIgnoreCase(str))
    return i;
  } 
  return ret;
 }
 
 public static byte[] stringToBytes(String str)
 {
  if(str==null||str.equals(""))
   return null;
  
  byte[] bytes = new byte[str.length()/2];
  for(int i=0;i<bytes.length;i++)
  {
   String high = str.substring(i*2,i*2+1);
   String low = str.substring(i*2+1,i*2+2);
   bytes[i] = (byte) (StringToByte(high)*16 + StringToByte(low));
  }
  return bytes;
 }
 
 public static void main(String[] args)
 {

  WapPush wp= new WapPush();

    

  String[] mobile_nos = {"13812345678"};
  

  int i = wp.sendSMS(mobile_nos,
   WapPush.stringToBytes(
    WapPush.getSMSPush("wap.monternet.com","monternet",
      new java.text.SimpleDateFormat("yyyyMMdd").format(new Date(System.currentTimeMillis())),
      new java.text.SimpleDateFormat("yyyyMMdd").format(new Date(System.currentTimeMillis()))
      )));


 }
}

如何通过短信网关发送Wappush消息?

如何通过短信网关发送Wappush消息? 1. 消息头,包含两部分,UDH和PUD,现在经过测试,有三种可以使用的包头数据. 包头a: UDH: 06 05 04 0B 84 23 F0...
  • zx249388847
  • zx249388847
  • 2017年03月28日 10:39
  • 330

《Python核心编程》第三章:Python基础

《Python核心编程》第三章:Python基础——介绍基本的语法、编码风格、内存管理机制,以一个读写文件的Python程序拉开Python编程的序幕。...
  • gdouchufu
  • gdouchufu
  • 2016年04月07日 12:08
  • 841

(0)银行新核心项目开工了!!!

作为新入行的新员工,刚接手工作就能参与全行新核心项目建设,实属幸运! 为了能让自己更清晰的了解新核心建设中的相关技术和业务,也为了能和同行一起交流技术共同进步,之后将不定期将新核心项目建设过程中遇到...
  • zhenweilee3471
  • zhenweilee3471
  • 2017年05月10日 20:05
  • 298

WAPPUSH 原理 基于短信网关WAP推送的实现

转自: http://blog.163.com/htlxyz@126/blog/static/168594029200962011411709/ 基于短信网关WAP推送的实现 WAP PU...
  • LIHUINIHAO
  • LIHUINIHAO
  • 2014年02月12日 17:04
  • 1510

Java垃圾收集机制

本文是《深入理解Java虚拟机》一书中第三章的读书总结。 前面介绍了Java内存结构和HotSpot虚拟机在堆内存中管理对象的过程。不过,在Java程序中对象的创建是非常频繁的,而内存的大小又是有限的...
  • u012877472
  • u012877472
  • 2016年05月25日 20:24
  • 1573

flume采集数据到hdfs

说明:flume1.5,hadoop2.2 1、配置JAVA_HOME和HADOOP_HOME 说明:HADOOP_HOME用于获取flume操作hdfs所需的jar和配置文件,如果不配置,也可以...
  • jinyingone
  • jinyingone
  • 2015年03月03日 23:39
  • 17074

Java垃圾收集算法

一、对象标记算法垃圾回收器在对堆内存进行回收前,第一件事情就是要确定哪些对象还”存活”中,哪些对象已经”死去”。一般有下面两种方法来对其进行标记。1、引用计数法原理:给对象中添加一个引用计数器,每当有...
  • hp910315
  • hp910315
  • 2016年03月20日 16:20
  • 932

通过短信网关发送Wappush(包括超长Wappush)

Wappush可以通过短信行业网关发送出去(通过submit消息体),移动和联通都是一样,至于电信的协议没试过,不过应该也一样,因为都是参照标准协议改编的。我参考了网上N多文章后才总结出来的一种规则,...
  • sonicliji
  • sonicliji
  • 2013年12月24日 09:08
  • 1533

企业新三板挂牌二十八个主要财税、法律问题解决方案!

【行业热点】企业新三板挂牌二十八个主要财税、法律问题解决方案! 按:新三板火爆的程度在自己的意料之外,很多机构都在预言,也许这是5年难得一见的创富机会。对于从业者来说,更重要的则是踏踏实实做好业...
  • charleslei
  • charleslei
  • 2015年09月07日 18:38
  • 1470

项目改造过程与心得体会-1-架构

前言:接下来用最简洁的方式,记录当前项目执行过程。项目背景:该项目是一个改造升级的后台管理系统项目;项目处理的业务:客户管理和资金管理,70%为报表查询和导出功能;项目改造原因:1、原项目采用的技术框...
  • javaloveiphone
  • javaloveiphone
  • 2017年02月15日 18:01
  • 524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:新收集的WAPPUSH代码,并经过改造(java版)
举报原因:
原因补充:

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