Java语音SDK接口开发经验及具体开发实现

一、语音发送类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. (1)txt 和content 不能同时为空 并且不能同时不为空.
  2. (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源代码下载:

DEMO     SDK语音接口文档   所有下载

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值