package com.thinkgem.jeesite.sinosoft.util;
import java.security.MessageDigest;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* sjp:这一部分暂时只用到了发送短信方法,状态报告,上行以及查询余额都没有用到
*
* 此版本使用 document 对象封装 XML,解决发送短信内容包涵特殊字符而出现无法解析, 如 短信为:“你好,<%&*&*&><<<>fds
* 测试短信”
*
* @author 8373
*/
public class HttpXmlUtil {
// ############################此部分参数需要修改############################
public static String userName = "dh22131"; // 接口账号
public static String password = "u@7yR9E?"; // 密码
// public static String phone = "15010475698"; // 要发送的手机号码
// public static String content = "短信内容"; // 短信内容
// public static String sign = "【大汉三通】"; // 短信签名,该签名必须提前报备
public static String msgid = ""; // 自定义 msgid
public static String subcode = ""; // 扩展字号
public static String sendtime = ""; // 定时发送时间,时间格式 201305051230
public static String url = "http://3tong.net"; // 无限通使用地址
// public static String url="http://www.10690300.com"; //三网通使用地址
// ############################此部分参数需要修改
// public static void main(String[] args) {
// // 发送短信
// System.out.println("*************发送短信*************");
// send();
// // 获取状态报告
// System.out.println("*************状态报告*************");
// getReport();
// // 获取上行
// System.out.println("*************获取上行*************");
// getSms();
// // 获取余额
// System.out.println("*************获取余额*************");
// getBalance();
// }
// MD5 加密函数
public static String MD5Encode(String sourceString) {
String resultString = null;
try {
resultString = new String(sourceString);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byte2hexString(md.digest(resultString.getBytes()));
} catch (Exception ex) {
}
return resultString;
}
public static final String byte2hexString(byte[] bytes) {
StringBuffer bf = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if ((bytes[i] & 0xff) < 0x10) {
bf.append("0");
}
bf.append(Long.toString(bytes[i] & 0xff, 16));
}
return bf.toString();
}
// 发送短信
/**
* 发送短信方法使用 document 对象方法封装 XML 字符串
*/
public static void send(String phone,String content) {
String posturl = url + "/http/sms/Submit";
Map<String, String> params = new LinkedHashMap<String, String>();
HttpXmlUtil docXml = new HttpXmlUtil();
/*
* String message = "<?xml version='1.0' encoding='UTF-8'?><message>" +
* "<account>" + userName + "</account>" + "<password>" +
* MD5Encode(password) + "</password>" + "<msgid></msgid><phones>" +
* phone + "</phones><content>" + content + "</content>" +"<sign>"+sign+
* "</sign><subcode></subcode><sendtime></sendtime></message>";
*/
String message = docXml.DocXml(userName, MD5Encode(password), msgid,
phone, content, subcode, sendtime);
System.out.println(message);
params.put("message", message);
String resp = doPost(posturl, params);
System.out.println(resp);
}
// 状态报告
public static void getReport() {
String posturl = url + "/http/sms/Report";
Map<String, String> params = new LinkedHashMap<String, String>();
String message = "<?xml version='1.0' encoding='UTF-8'?><message>"
+ "<account>" + userName + "</account>" + "<password>"
+ MD5Encode(password) + "</password>"
+ "<msgid></msgid><phone></phone></message>";
params.put("message", message);
String resp = doPost(posturl, params);
System.out.println(resp);
}
// 查询余额
public static void getBalance() {
String posturl = url + "/http/sms/Balance";
Map<String, String> params = new LinkedHashMap<String, String>();
String message = "<?xml version='1.0' encoding='UTF-8'?><message><account>"
+ userName
+ "</account>"
+ "<password>"
+ MD5Encode(password)
+ "</password></message>";
params.put("message", message);
System.out.println(message);
String resp = doPost(posturl, params);
System.out.println(resp);
}
// 获取上行
public static void getSms() {
String posturl = url + "/http/sms/Deliver";
Map<String, String> params = new LinkedHashMap<String, String>();
String message = "<?xml version='1.0' encoding='UTF-8'?><message><account>"
+ userName
+ "</account>"
+ "<password>"
+ MD5Encode(password)
+ "</password></message>";
params.put("message", message);
String resp = doPost(posturl, params);
System.out.println(resp);
}
/**
* 执行一个 HTTP POST 请求,返回请求响应的 HTML
*
* @param url
* 请求的 URL 地址
* @param params
* 请求的查询参数,可以为 null
* @return 返回请求响应的 HTML
*/
private static String doPost(String url, Map<String, String> params) {
String response = null;
HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod(url);
postMethod.getParams().setParameter(
HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
// 设置 Post 数据
if (!params.isEmpty()) {
int i = 0;
NameValuePair[] data = new NameValuePair[params.size()];
for (Entry<String, String> entry : params.entrySet()) {
data[i] = new NameValuePair(entry.getKey(), entry.getValue());
i++;
}
postMethod.setRequestBody(data);
}
try {
client.executeMethod(postMethod);
if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
response = postMethod.getResponseBodyAsString();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
postMethod.releaseConnection();
}
return response;
}
/**
* 使用 document 对象封装 XML
*
* @param userName
* @param pwd
* @param id
* @param phone
* @param contents
* @param sign
* @param subcode
* @param sendtime
* @return
*/
public String DocXml(String userName, String pwd, String msgid,
String phone, String contents, String subcode,
String sendtime) {
Document doc = DocumentHelper.createDocument();
doc.setXMLEncoding("UTF-8");
Element message = doc.addElement("message");
Element account = message.addElement("account");
account.setText(userName);
Element password = message.addElement("password");
password.setText(pwd);
Element msgid1 = message.addElement("msgid");
msgid1.setText(msgid);
Element phones = message.addElement("phones");
phones.setText(phone);
Element content = message.addElement("content");
content.setText(contents);
// Element sign1 = message.addElement("sign");
// sign1.setText(sign);
Element subcode1 = message.addElement("subcode");
subcode1.setText(subcode);
Element sendtime1 = message.addElement("sendtime");
sendtime1.setText(sendtime);
return message.asXML();
// System.out.println(message.asXML());
}
/**
* 生成短信验证码
* @param length 验证码的长度
* @return
*/
public static String createRandomForSms(int length){ //length:验证码的长度
String retStr = "";
// String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";
String strTable="1234567890";
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java调用HTTP发送短信接口小例子(包含基本jar包).rar (5个子文件)
Java调用HTTP发送短信接口小例子(包含基本jar包)
dom4j-1.6.1.jar 307KB
commons-httpclient-3.1.jar 298KB
commons-logging-1.1.1.jar 59KB
commons-codec-1.6.jar 227KB
HttpXmlUtil.java 8KB
共 5 条
- 1
IT-新菜
- 粉丝: 18
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页