一、语音发送类Audio(Audio.java)
package Audiosend;
import java.io.*;
import java.net.*;
import java.security.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Audio {
//服务器
private String serverURl = "http://sdk3.leiyusoft.com:8060/webservice.asmx";
private String sn = "";
private String password = "";
private String pwd = "";
public Audio(String sn,String pass) throws UnsupportedEncodingException
{
this.sn = sn;
this.password = pass;
this.pwd = getMD5(sn + pass);
}
/*
* 方法名称:getMD5
* 功 能:字符串MD5加密
* 参 数:待转换字符串
* 返 回 值:加密之后字符串
*/
public String getMD5(String sourceStr) throws UnsupportedEncodingException {
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;
}
}
/*
* 方法名称:mdAudioSend
* 功 能:提交彩信基本信息
* 参 数:title 传真标题,mobile 手机号,txt 文本内容, content 传真base64内容,schTime 定时时间,如果不需要置为空间
* 返 回 值:返回一个唯一值rrid
*/
public String mdAudioSend (String title,String mobile,String txt,String content,String srcnumber,String stime)
{
String result = "";
String soapAction = "http://tempuri.org/mdAudioSend";
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 += "<mdAudioSend xmlns=\"http://tempuri.org/\">";
xml += "<sn>" + sn + "</sn>";
xml += "<pwd>" + pwd + "</pwd>";
xml += "<title>" + title + "</title>";
xml += "<mobile>" + mobile + "</mobile>";
xml += "<txt>" + txt + "</txt>";
xml += "<content>" + content + "</content>";
xml += "<srcnumber>" + srcnumber + "</srcnumber>";
xml += "<stime>" + stime + "</stime>";
xml += "</mdAudioSend>";
xml += "</soap12:Body>";
xml += "</soap12:Envelope>";
URL url;
try {
url = new URL(serverURl);
URLConnection connection = url.openConnection();
HttpURLConnection httpconn = (HttpURLConnection) connection;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
bout.write(xml.getBytes());
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("<mdAudioSendResult>(.*)</mdAudioSendResult>");
Matcher matcher = pattern.matcher(inputLine);
while (matcher.find()) {
result = matcher.group(1);
}
}
return result;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
二、Java调用实现
参数名称 | 说明 | 类型 | 是否必须 | 备注 |
Sn | 软件序列号 | String | 是 | 格式XXX-XXX-XXX-XXXXX |
Pwd | 密码 |
String
| 是 | md5(sn+password) 32位大写密文 |
title
|
主题
|
String
|
是
| 长度最大40字符 |
Mobile | 手机号 |
String
| 是 | 手机号码多个以英文逗号隔开 |
txt
| 文本内容 |
String
|
否
| 普通文本内容,最大300个字符 |
Content | Wav base64串 | String |
否
| 文件内容,base64编码(完整文件名(包括后缀),文件base64编码串);文件名最大20个字符包括后缀,编码文件大小最大500k.如您好.wav,base64编码串 |
Srcnumber | 源号码(号码显示) |
String
| 是 | 源号码(号码显示) |
stime | 定时时间 |
String
| 否 | 格式为 yyyy-mm-dd HH:MM:SS,例如:2010-12-29 16:27:03(非定时置空) |
返回rrid:201012300908160937 (示例)
输出结果:
XML格式:
1.注意事项:
- (1)txt 和content 不能同时为空 并且不能同时不为空.
- (2)语音合成请求(附加功能):
txt不为空,同时mobile为空.调用成功返回如201012300908160937那么通过下面的地址可以得到该文本合成的语音文件: http://sdk3.leiyusoft.com:8060/yuyin/syn/201012300908160937_47512.wav
地址格式是:http:// sdk3.leiyusoft.com:8060/yuyin/syn/rrid_特服号.wav
此处的rrid 为接口提交成功的返回值.特服号是该序列号(sn)对应的一个短号码,可以通过此接口的GetCode 方法进行获取.GetCode的返回值形式如 047512 此处0表示成功 47512 表示该sn对应的该特服号.
2.具体函数Java实现:
package Audiosend;
import java.io.*;
import java.net.URLEncoder;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class AudioClient {
public static String sn = "SDK-SSD-010-XXXXX";
public static String password = "XXXXXXX";
public static String title ="标题";
public static String mobile = "13817885229";
public static void main(String[] args) throws UnsupportedEncodingException {
Audio Client = new Audio(sn,password);
try{
String content="",txt="";
String flag="txt";
if (flag.equals("txt"))
{
content="";
txt="文本部分测试";
}
else
{
//String pathaudio = "e:\\test.wav";
//File fileaudio = new File(pathaudio);
//InputStream fileInputStreamaudio = new FileInputStream(fileaudio);
//byte[] tempbyteaudio = new byte[fileInputStreamaudio.available()];
//fileInputStreamaudio.read(tempbyteaudio);
//String faxbase64String = Base64.encode(tempbyteaudio);
//content = "内容部分测试";
//txt="文本部分测试";
}
String schTime="",srcnumber="";
String resultFirst="";
if(resultFirst.startsWith("-"))
{
System.out.println(""+resultFirst+"");
}else {
System.out.println(""+ resultFirst);
}
}catch (Exception e) {
// TODO: handle exception
}
getwav();
}
public static void getwav() throws UnsupportedEncodingException
{Audio Client = new Audio(sn,password);
System.out.println("");
String resultFirst="";
resultFirst = Client.mdAudioSend(title,"手机号1,手机号2","请添加语音内容","","", "");
if(resultFirst.startsWith("-"))
{
System.out.println(""+resultFirst+"");
}else {
System.out.println("http://sdk3.leiyusoft.com:8060/yuyin/syn/"+resultFirst+"");
System.out.println("");
}
}
}
三、webservice返回集合对照表:
返回值 | 返回值说明 |
-2 | 帐号/密码不正确 |
-4 | 余额不足 |
-5 | 数据格式错误 |
-6 | 参数有误 |
-8 | 流量控制错误 |
-10 | 内容长度长 |
-11 | 数据库错误 |
-12 | 序列号状态错误 |
-13 | 没有提交增值内容 |
-14 | 服务器写文件失败 |
-15 | 文件内容base64编码错误 |
四、附加说明:
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
五、示例Demo源代码下载: