Java彩信接口开发经验及具体开发实现

来源:互联网 发布:小米note网络制式 编辑:程序博客网 时间:2024/05/16 01:36

一、彩信发送类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.entinfo.cn: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 version=\"1.0\" encoding=\"utf-8\"?>";xml += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";xml += "<soap12:Body>";xml += "<mdMmsSend xmlns=\"http://tempuri.org/\">";xml += "<sn>" + sn + "</sn>";xml += "<pwd>" + pwd + "</pwd>";xml += "<title>" + title + "</title>";xml += "<mobile>" + mobile + "</mobile>";xml += "<content>" + content + "</content>";xml += "<stime>" + stime + "</stime>";xml += "</mdMmsSend>";xml += "</soap12:Body>";xml += "</soap12:Envelope>";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("<mdMmsSendResult>(.*)</mdMmsSendResult>");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.entinfo.cn: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 = "18636924700";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.entinfo.cn:8060/webservice.asmx

2.其它说明:

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

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

3. 郑重声明:

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

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

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

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx

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

或者

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx?wsdl

六、示例Demo源代码下载:

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

 

0 0
原创粉丝点击