彩信SDK

当前位置: 首页 > 彩信SDK > Java彩信SDK
Java彩信SDK

一、彩信发送类MdMmsSend(MdMmsSend.java)

package mmsdemo;
import java.io.*;
import java.net.*;
import java.security.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MdMmsSend {
	
	/**发送彩信的web service服务器地址*/
	private static final String SERVER_URL = "http://sdk3.leiyusoft.com:8060/webservice.asmx";
	/**序列号*/
	private String sn = null;
	/**序列号加密码经MD5加密后的32位大写字符串*/
	private String pwd = null;
	
	/**构造方法*/
	public MdMmsSend(String sn,String password) {
		this.sn = sn;
		this.pwd = getMD5(sn + password);
	}
	
	/**
	 * 序列号加密码32位MD5加密方法
	 * @param sourceStr 序列号加密码的字符串
	 * @return 加密后的字符串
	 */
	public String getMD5(String sourceStr) {
		String resultStr = "";
		try {
			byte[] temp = sourceStr.getBytes();
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.update(temp);
			// resultStr = new String(md5.digest());
			byte[] b = md5.digest();
			for (int i = 0; i < b.length; i++) {
				char[] digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
						'9', 'A', 'B', 'C', 'D', 'E', 'F' };
				char[] ob = new char[2];
				ob[0] = digit[(b[i] >>> 4) & 0X0F];
				ob[1] = digit[b[i] & 0X0F];
				resultStr += new String(ob);
			}
			return resultStr;
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 发彩信方法
	 * @param title 标题,GBK编码
	 * @param mobile 手机号,多个用英文逗号隔开
	 * @param content 内容,参照文档编辑内容格式
	 * @param stime 定时时间,例2013-04-03 12:23:32
	 * @return 成功返回长字符串,失败返回负数
	 */
	public String mdMmsSend(String title,String mobile,String content,String stime) {
		String result = null;
		String soapAction = "http://tempuri.org/mdMmsSend";
		String xml = "";
		xml += "";
		xml += "";
		xml += "";
		xml += "" + sn + "";
		xml += "" + pwd + "";
		xml += "" + title + "";
		xml += "" + mobile + "";
		xml += "" + content + "";
		xml += "" + stime + "";
		xml += "";
		xml += "";
		xml += "";
		
		URL url;
		try {
			url = new URL(SERVER_URL);

			URLConnection connection = url.openConnection();
			HttpURLConnection httpconn = (HttpURLConnection) connection;
			ByteArrayOutputStream bout = new ByteArrayOutputStream();
			bout.write(xml.getBytes("GBK"));
			byte[] b = bout.toByteArray();
			httpconn.setRequestProperty("Content-Length", String
					.valueOf(b.length));
			httpconn.setRequestProperty("Content-Type",
					"text/xml; charset=gb2312");
			httpconn.setRequestProperty("SOAPAction", soapAction);
			httpconn.setRequestMethod("POST");
			httpconn.setDoInput(true);
			httpconn.setDoOutput(true);

			OutputStream out = httpconn.getOutputStream();
			out.write(b);
			out.close();

			InputStreamReader isr = new InputStreamReader(httpconn
					.getInputStream());
			BufferedReader in = new BufferedReader(isr);
			String inputLine;
			while (null != (inputLine = in.readLine())) {
				Pattern pattern = Pattern.compile("(.*)");
				Matcher matcher = pattern.matcher(inputLine);
				while (matcher.find()) {
					result = matcher.group(1);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
}

	 

二、Java调用实现

参数名称

说明

是否必须   

备注

Sn

软件序列号

格式XXX-XXX-XXX-XXXXX

Pwd

密码

md5(sn+password) 32位大写密文

title
彩信主题

限制在30字符以内

Mobile

手机号

手机号码多个以英文逗号隔开

Content

内容

base64编码(文件名1,文件base64编码串;文件名2,文件base64编码串);实际发送文件小于等于50*1024 字节

stime

定时时间

例如:2010-12-29 16:27:03(非定时置空)

函数返回值:String。

content是您发送的彩信的内容:包含图片和声音及文本;

1.文件类型: 文本是.txt 图片是.jpg或者.gif 声音是.mid或者.amr

2.内容格式:

帧数_文件类型.扩展名 + 英文逗号 + 文件的base64编码字符串 + 分号 ;

例如:“1_1.txt,” + 文件base64编码字符串 + “;” + “1_2.jpg,” + 文件base64编码字符串+”;”+”1_3.mid”+文件base64编码字符串

文本是 n_1.txt  图片是 n_2.jpg 或者是 n_2.gif  声音是 n_3.mid ;

N表示当前第几帧,后缀不变,编码均为GB2312。

接口地址:http://sdk3.leiyusoft.com:8060/webservice.asmx?op=mdMmsSend

示例1

SN= SDK-SSD-010-00001

PWD=3B5D3C427365F40C1D27682D78BB31E0

title:彩信测试

Mobile:139***404,138***213…………….

Content:测试

Stime: ""

输出结果:

XML格式:

具体函数Java实现:

package mmsdemo;

import java.io.*;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

public class TestMdMmsSend {

	public static void main(String[] args) {
		
		String sn = "SDK-SSD-010-XXXXX";
		String password = "XXXXXX";
		String mobile = "13817885229";
		String pathjpg = "e:\\1.gif";
		String title = null;
		byte[] txt = null;
		try {
			title = new String("彩信标题".getBytes(), "GBK");
			txt = "hello彩信内容".getBytes("GBK");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		
		File filejpg = new File(pathjpg);
		byte[] tempbytejpg = null;
		try {
			InputStream fileInputStreamjpg = new FileInputStream(filejpg);
			tempbytejpg = new byte[fileInputStreamjpg.available()];
			fileInputStreamjpg.read(tempbytejpg);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		String jpgbase64String = Base64.encode(tempbytejpg);
		String txtbase64String = Base64.encode(txt);
		
		String content = "1_2.gif," + jpgbase64String + ";" + "2_1.txt," + txtbase64String;
		String stime="";
		MdMmsSend mms = new MdMmsSend(sn, password);
		String result = mms.mdMmsSend(title, mobile, content, stime);
		System.out.println(result);
	}
	
}
	 

三、webservice返回集合对照表:

返回值

返回值说明

1

没有数据需要接收

-2

帐号/密码不正确 

-3

重复登陆

-4

余额不足

-5

数据格式错误

-6

参数有误

-8

流量控制错误

-11

数据库错误

-12

序列号状态错误

-13

没有提交增值内容

-14

服务器写文件失败

-17

该接口禁止使用该方法

-18 

等上一批提交结果返回再继续下一批提交

-15

内容长度长

-22

Ip绑定

四、附加说明:

1.彩信SDK地址:

常用接口地址:http://sdk3.leiyusoft.com:8060/webservice.asmx

2.其它说明:

(1)开发使用的帐号必须为SDK开头,如SDK-SSD-010-00001,帐号第一次需要调用Register方法注册一次.仅需注册一次即可,信息必须真实

(2)UnRegister与Register配合使用, 连续使用不得超过10次/天;

3. 郑重声明:

(1)禁止相同的内容多个手机号连续一条一条提交. 否则禁用帐号,由此带来损失由客户自行负责.

(2)请客户提供外网服务器IP以便于绑定IP发送,提高账号的安全性!

(3)在程序里最好有配置文件,程序自动判断当某个接口连接超时提交速度变慢时.程序可以自动切换其它的接口以下是推荐的几个服务器,仅接口地址不同而已.方法全部相同;

地址1:http://sdk3.leiyusoft.com:8060/webservice.asmx

这些地址都是标准的webservice地址,C#,Java客户可以按照自己熟悉的方式去解析String   

或者

地址1:http://sdk3.leiyusoft.com:8060/webservice.asmx?wsdl

五、Java示例Demo源代码下载:

DEMO      SDK彩信接口文档   所有下载