短信接口
项目需要集成短信功能。网上查了很多资料,了解到有下面几种短信途径。
1. 可以通过移动等运营商购买短信接口
2. 可以通过第三方短信提供商。如短信通(http://www.dxton.com/)。
前段时间和湖南短信提供商合作,不过不顺利,影响了项目的进度。最开始商量的是我们自己建立数据库,然后他们提供插件。我们在网上买了空间,可是需求理解错了。后来需要在他们的服务器上建立数据库,然后插入数据。最后由于多种原因,没有成功。附部分工作(按照《DB新建插件.doc》在MAS移动服务代理器后台管理中新建插件;购买数据库空间,按照《短信DB开发手册.doc》建立数据库,插入测试数据)。
后来在网上找了一家短信提供商,名叫“短信通”。最开始提供的接口很容易实现,他们还提供了测试账号。集成到项目里了,可是测试账号的短信数量不够。于是向他们购买账号。可是又遇到了问题,他们提供两种短信,一种是群发,适用:5万条内、小批量群发短信客户,资费:100元1500条;300元5000条;500元1万条,试用满意后1-500元任意充值(通过网银、支付宝),但不能集成到项目里,只能手动编辑。另一种是短信接口,可以集成到项目里,但是1万条起订,由于我们的项目处于测试阶段,用不了那么多。后来几经周折,他们提供一个账号,100元1500条短信。后来经过小小的改动后,算是顺利集成到项目里了。
下面提供自己在原有接口上改动的代码(未集成Junit进行单元测试):
普通短信接口(提供API改动版)
PropertiesConfig.java
package com.axt.sms.util;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
/**
*
* @author Wentasy
* @createtime 2013年1月13日14:58:54
* @version 1.0
* @since JDK 1.6
*/
public class PropertiesConfig {
/**
* 获取整个配置文件中的属性
* @param filePath 文件路径,即文件所在包的路径,例如:java/util/config.properties
*/
public static Properties readData(String filePath) {
filePath = getRealPath(filePath);
Properties props = new Properties();
try {
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
props.load(in);
in.close();
return props;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static String getRealPath(String filePath) {
//获取绝对路径 并截掉路径的”file:/“前缀
return PropertiesConfig.class.getResource("/" + filePath).toString().substring(6);
}
}
SmsUtil.java
package com.axt.sms.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* @className: SmsUtil.java
* @classDescription:
* @function:
* @author: Wentasy
* @createTime: 2013-1-13 上午10:50:41
* @modifyTime:
* @modifyReason:
* @since: JDK 1.6
*/
public class SmsUtil {
@SuppressWarnings("deprecation")
public static String sendSms(String content,String phoneNumber[]) throws Exception{
String reslutCode = "";
String mobile = "";
//发送内容
// content = "短信通JAVA示例测试";
// 创建StringBuffer对象用来操作字符串
StringBuffer sb = new StringBuffer("http://http.chinasms.com.cn/tx/?");
Properties props = PropertiesConfig.readData("sms.properties");
String uid = props.getProperty("