import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.httpclient.HttpClient;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import sun.misc.BASE64Encoder;
public class SendMmsDemo {
public static void main(String[] args) {
String xml = PackMMS("彩信帐号","帐号密码","电话号码","","彩信标题-测试","图片路径");
System.out.println("请求的XML:\r\n"+xml);
String ext;
try {
ext = sendMMSPost(xml);
System.out.println();
System.out.println("返回的XML:\r\n"+ext);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @sname String 彩信账号
* @spwd String 彩信账号密码
* @numbers String 电话号码
* @sendtime String 发送时间
* @title String 彩信标题
* @path String 图片文件路径
*/
public static String PackMMS(String sname, String spwd, String numbers, String sendtime, String title,String path){
//构建XML文件
org.dom4j.Element xml = org.dom4j.DocumentHelper.createElement("root");
xml.addElement("userid").setText(sname);
xml.addElement("password").setText(spwd);
xml.addElement("numbers").setText(numbers);
xml.addElement("sendtime").setText(sendtime);
xml.addElement("title").setText(title);
org.dom4j.Element smilx = xml.addElement("smilx");
org.dom4j.Element layout = smilx.addElement("head").addElement("layout");
org.dom4j.Element region = layout.addElement("region");
region.addAttribute("id","img_region");
region.addAttribute("top","0");
region.addAttribute("background-color","meet");
org.dom4j.Element rootlayout = layout.addElement("root-layout");
rootlayout.addAttribute("id","#FFFFFF");
org.dom4j.Element body = smilx.addElement("body");
/*
* 添加彩信帧,可以添加多帧
*/
//第一帧
org.dom4j.Element par = body.addElement("par");
//帧播放时间
par.addAttribute("dur", "10s");
//添加彩信图片 图片文件 必须Base64编码
org.dom4j.Element img = par.addElement("img");
img.setText(GetImageBase64(path+"test.jpg"));
img.addAttribute("region", "img_region");
img.addAttribute("src", "0.jpg");
//彩信文字内容
par.addElement("text").addAttribute("src", "0.txt").setText("第一帧彩信的内容");
//第二帧
org.dom4j.Element par2 = body.addElement("par");
//帧播放时间
par2.addAttribute("dur", "10s");
//彩信文字内容
par2.addElement("text").addAttribute("src", "1.txt").setText("第二帧彩信的内容");
return xml.asXML();
}
/**
* 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
* @param imgFilePath
* @return String
*/
private static String GetImageBase64(String imgFilePath) {
if(imgFilePath==null || "".equals(imgFilePath))return null;
System.out.println("Base64Util img="+imgFilePath);
byte[] data = null;
// 读取图片字节数组
try {
InputStream in = new FileInputStream(imgFilePath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64编码过的字节数组字符串
}
/**
* @param 请求XML
* @return 返回的XML
*/
private static synchronized String sendMMSPost(String xml)throws Exception{
HttpClient httpclient = new HttpClient();
org.apache.commons.httpclient.methods.PostMethod post = new org.apache.commons.httpclient.methods.PostMethod("http://server4.chineseserver.net:9901/MMSServer/SmsAPI/SendMMessage.jsp");
post.addRequestHeader("Content ", "text/html,charset=utf-8");
httpclient.getParams().setContentCharset("utf-8");
post.addParameter(new org.apache.commons.httpclient.NameValuePair("xml",xml));
httpclient.executeMethod(post);
String ret = post.getResponseBodyAsString();
Document doc = DocumentHelper.parseText(ret);
return doc.asXML();
}
}
评论1
最新资源