📄 smssender.java
字号:
/**
* 短信平台客户端编程实例
*
* 描述:
* <ol>
* <li>开发语言为JAVA,该说明适用于JAVA程序员
* <li>该实例适用于windows, Linux, 所有UNIX(可安装JDK1.3以上版本和JCE)操作系统,不能用于手
* 持设备。
* 注:如果使用JDK1.4以上版本不需要额外安装JCE。如果使用JDK1.3x,请安装JCE。
* <li>该实例采用了Apache组织的axis项目的库完成SOAP协议Over HTTP功能,版本是1.1RC2,你也可以
* 采用其他你所熟悉的SOAP兼容库。
* Apache AXIS的详细介绍请参见http://ws.apache.org/axis/
* <li>通过SSL发送短信的实现参照该方式自行解决
* <li>该程序的逻辑说明请参见短信平台客户端开发的相关文档
* <li>该程序只作为参考实现,未考虑运行效率,请客户端开发者根据自己的实际情况修改,例如尽量减少网络连接请求次数等
* </ol>
*
* 使用步骤:
* 1)利用axis的wsdl2java工具生成soap存根
* 命令行为: java -cp "<axis_jar_lib>" org.apache.axis.wsdl.WSDL2Java <your_wsdl_url>
* 2)将生成的存根导入你的开发工程,这里是"smstest.smsservice.sMsg_asmx.*"
* 3)如该程序所示的进行调用
*
* 作者: huaxiaotao@tomosoft.com
* 版本: 1.0.0
*/
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import java.security.*;
import javax.crypto.*;
import smstest.smsservice.sMsg_asmx.*; //axis生成存根
public class smssender {
/**
*发送者的用户名
*/
static String user = "bluetiger";
/**
*发送者的密码
*/
static String pwd = "123";
/**
*发往服务器的hash结果
*/
static String hash = "";
/**
*服务器返回的随机串
*/
static String rand_str = "";
public smssender() throws Exception {
try {
//取得soap存根接口
SMsgSoap soap = new SMsgLocator().getSMsgSoap();
//取得随机字符串
rand_str = soap.getRandom();
//hash密码与随机字符串
hash();
//发送短信,第一个参数为企业特服号,倒数第二个参数为源号码(即显示在接收方手机上的“来自”号码)
soap.send("010099999", user, rand_str, hash, "hello j2ee", "13910981155", "010099999","");
} catch (org.apache.axis.AxisFault e) {
System.out.println(e.dumpToString());
}
}
/**
*使用MD5算法HASH密码,结果转存为十六进制串。
*然后将服务器传过来的随机串和密码的HASH结果连接
*再次使用MD5进行HASH运算,保存十六进制串结果到变量'hash'
*/
public void hash() throws Exception{
if (rand_str.length() == 0) return;
byte[] plainText = pwd.getBytes("UTF8");
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(plainText);
byte[] buf = messageDigest.digest();
for (int i = 0; i < buf.length; i++) {
int temp;
if (buf[i] < 0) temp = 256 + buf[i];
else temp = buf[i];
if (temp < 16) hash += "0";
hash += Integer.toString(temp, 16);
}
hash = hash.toUpperCase();
System.out.println("hash result1 is:" + hash);
plainText = (rand_str + hash).getBytes("UTF-8");
messageDigest.update( plainText);
buf = messageDigest.digest();
hash = "";
for (int i = 0; i < buf.length; i++) {
int temp;
if (buf[i] < 0) temp = 256 + buf[i];
else temp = buf[i];
if (temp < 16) hash += "0";
hash += Integer.toString(temp, 16);
}
hash = hash.toUpperCase();
System.out.println("hash result2 is:" + hash);
}
public static void main(String[] args) throws Exception {
smssender smssender1 = new smssender();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -