1、电信增值业务及软件开发一
实践报告
学 院: 软件学院 专 业: 软件工程
班 级: 学 号:
姓 名2: 指导老师:
2013年 06月 22日
实验一:短消息MO指令匹配算法
一、 实验步骤及实验结果
实验代码:
#include
2、int len1,len2; int len; int next[100]; int i,j; int k; int count=0; len1=strlen(S); len2=strlen(T); len=len1-len2; j=1,k=0; next[1]=0; while(j〈len2) { if(k==0||T[j-1]==T[k-1]) { j++; k++; next[j]=k; } else k=next[k]; } i=0; j=0; while(
3、j!=len2&&i〈len1)
{
count++;
if(S[i]!=T[j])
{
if(j==0)
i++;
else
j=next[j+1]—1;
}
else
{
i++;
j++;
}
}
cout<〈len1<〈endl;
cout<〈i<〈endl;
cout〈〈j〈〈endl;
if(j==len2)
{
cout<<”匹配成功,初始匹配成功的位置为第:"〈〈i—len2+1<〈"个字符”< 4、l;
cout〈<"匹配次数为:”〈〈count〈〈endl;
}
else
{
cout〈<”匹配次数为:”<〈count<〈endl;
cout〈〈"匹配失败”<〈endl;
}
}
二、实验截图:
二、 心得:
通过这次实验,用C/C++/C#或Java编程实现短消息MO指令匹配算法,该算法能够实现短消息MO指令的长号码和指令内容的模糊和精确匹配、空指令匹配功能。
实验二:短消息增值业务软件开发平台及接口
一、实验步骤及实验结果
( 1 )实验内容“根据短信增值业务软件开发平台的操作手册熟悉短信增值业务软件开发平台”的实验步骤如下:
登陆 5、短信增值业务平台
http://172。22.118.16:8081/sms/
创建一个属于自己的业务,按需求和格式定义业务名称、指令类型、匹配方式、资费、处理方式、通道并送发审核。
实验结果
短信成功接收到,并且程序返回值为“0"
结果分析
通过平台下发的测试短信最终预期收到。说明在平台上创建的业务通道,格式正确。并且已经通过管理员的审核,能够合法的使用平台提供的通道资源。测试代码的发送成功还说明在程序中调用平台接口的方式是正确的.
( 2 )实验内容“根据短消息增值业务软件开发平台的接口手册,熟悉短消息增值业务软件开发平台的HTTP接口、API接口、Web Serv 6、ice接口等的使用方法”的实验步骤如下:
http接口的参数定义格式:
在程序中调用已通过审核的业务
String url = ”http://172。22.118.16:8081/sms/http/SendSms”;
// 读取接口传递过来的参数并封装数据
RequestData rd = new RequestData();
rd。setPhone("15923932303”);
rd.setServiceId("2”);
rd。setChannelId("1");
rd.setDestNumber("1”);
rd。setLinkId( 7、
rd.setMoId(””);
rd.setSpNumber(”");
rd.setFunctionType("");
rd。setType(””);
通过程序来实现短信的下发
代码实现:
MainClass。java
package com.cqupt.http;
public class MainClass {
String phone = ””;
public MainClass() {
String mtMsg = ””;
String commString = ”";
String url = ”http://17 8、2.22.118.16:8081/sms/http/SendSms";
// 读取接口传递过来的参数并封装数据
RequestData rd = new RequestData();
rd。setPhone(”15923932303”);
rd。setServiceId("2”);
rd.setChannelId("1");
rd。setDestNumber(”1");
rd。setLinkId("");
rd。setMoId("");
rd。setSpNumber(””);
rd.setFunctionType(””);
rd 9、setType("");
// 业务逻辑判断
mtMsg = "第二条测试信息”;
rd.setMtMsg(mtMsg);
// 拼接数据
commString = RequestUtil.getInstance()。commString(rd);
// 转发到重邮平台
RequestUtil。getInstance()。requestURL(commString, url);
}
public static void main(String[] args) {
MainClass mainClass = new MainClass() 10、
}
}
RequestData.java
package com.cqupt。http;
public class RequestData {
private String phone;
private String destNumber;
private String serviceId;
private String channelId;
private String linkId;
private String moId;
private String spNumber;
private String functionType;
pri 11、vate String type;
private String content;
private String mtMsg;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this。phone = phone;
}
public String getDestNumber() {
return destNumber;
}
public void setDestNumber(String destNumber) {
this 12、destNumber = destNumber;
}
public String getServiceId() {
return serviceId;
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getChannelId() {
return channelId;
}
public void setChannelId(String channelId) {
this。channelId = channelId 13、
}
public String getLinkId() {
return linkId;
}
public void setLinkId(String linkId) {
this。linkId = linkId;
}
public String getMoId() {
return moId;
}
public void setMoId(String moId) {
this。moId = moId;
}
public String getSpNumber() {
return spNumber;
}
publ 14、ic void setSpNumber(String spNumber) {
this。spNumber = spNumber;
}
public String getFunctionType() {
return functionType;
}
public void setFunctionType(String functionType) {
this.functionType = functionType;
}
public String getType() {
return type;
}
public void setType( 15、String type) {
this。type = type;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getMtMsg() {
return mtMsg;
}
public void setMtMsg(String mtMsg) {
this.mtMsg = mtMsg;
}
}
RequestUtil。 16、java
package com。cqupt。http;
import java.io.BufferedReader;
import java.io。InputStreamReader;
import java。io.OutputStream;
import java.io.UnsupportedEncodingException;
import 。HttpURLConnection;
import 。URL;
import java。net。URLEncoder;
public class RequestUtil {
private RequestUtil() {
17、}
private static RequestUtil requestUtil = null;
/**
* 单例模式,返回RequestUtil的实例化对象
*
* @return requestUtil
*/
public static RequestUtil getInstance() {
if (requestUtil == null) {
requestUtil = new RequestUtil();// 需要的时候才new,节省空间.
}
return requestUtil;
}
/**
* 拼接字 18、符串
* @param rd 传递的参数封装成的包信息
* @return commString 拼接好的请求信息字符串
*/
public String commString(RequestData rd) {
String commString = "";
try {
commString = "userName=2012123667&password=123&phone=" + rd.getPhone() + "&destNumber=" + rd.getDestNumber() + "&serviceId=” + rd。getServiceId 19、
+ "&channelId=” + rd.getChannelId() + ”&linkId=" + rd.getLinkId() + "&moId=” + rd.getMoId() + "&spNumber=" + rd.getSpNumber() + ”&content="
+ URLEncoder。encode(rd.getMtMsg(), "UTF—8”) + ”&functionType=” + rd。getFunctionType() + ”&type=" + rd.getType() + ”& =3";
} catch (UnsupportedEncodin 20、gException e) {
e.printStackTrace();
}
return commString;
}
/**
* 将结果短信转发到指定的平台
* @param commString 请求字符串
* @param address 信息发送的目的URL地址
* @return rec_string 发送结果内容
*/
public String requestURL(String commString, String address) {
String rec_string = ””;
URL url = 21、null;
HttpURLConnection urlConn = null;
try {
url = new URL(address);
urlConn = (HttpURLConnection) url。openConnection();
urlConn.setConnectTimeout(30000);
urlConn。setReadTimeout(30000);
urlConn.setRequestMethod("POST");
urlConn.setDoOutput(true);
OutputStream out = 22、 urlConn.getOutputStream();
out。write(commString。getBytes("GBK”));
out。flush();
out。close();
BufferedReader rd = new BufferedReader(new InputStreamReader(urlConn。getInputStream(), ”UTF-8"));
StringBuffer sb = new StringBuffer();
int ch;
while ((ch = rd。read()) 〉 -1) {
23、 sb.append((char) ch);
}
System。out。println(sb.toString());
rec_string = sb。toString()。trim();
rd.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConn != null) {
urlConn。disconnect();
}
}
return rec_string;
}
}
1。根据短信增值业务软件开发 24、平台的接口手册熟悉短信增值业务软件开发平台的HTTP接口等。
2.调用短信增值业务软件开发平台的HTTP接口,编写一个Web程序实现“趣味答题”短信增值业务.
实验步骤
创建业务
因为本次实验要调用HTTP接口,所以我们在选在处理方式的时候要选择HTTP转发
提交审核
审核通过
业务实现
数据库设计
根据整个项目情况可以看出这个业务平台需要的数据表:用户答题信息表User_message、题目信息表title_message。
title_message表结构
字段
类型
默认值
描述
Id
Number(10)
主键
titleType
Varcha 25、r2(30)
题目类型
consequence
Varchar2(10)
题目答案
titleNumber
Number(10)
题目题号
content
Varchar2(100)
题目内容
user_message表结构
字段
类型
默认值
描述
Id
Varchar2(100)
主键
phone
Number(10)
手机号码
titleType
Number(10)
回答题目类型
countNumber
Number(10)
回答题目数
successNumber
Number(10)
答对 26、题目数
errorNumber
Number(10)
答错题目数
三、 心得
通过本次实验熟悉了大汉三通公司的短信增值业务软件开发平台,掌握了短息增值业务软件的入门知识。但目前还只是初步会使用大汉三通公司封装打包提供的功能,自己对于底层的实现还不能够明确掌握。
实验三:基于HTTP接口的短消息编程
一、 实验步骤及实验结果
1、将文件mpay_sms_http导入Myeclipse中
2、 配置web.xml如图
3、发布工程及修改路径
4、访问工程
在地址栏中输URL: http://127.0。0。1:8080/mpay_sms_http/http/httpTe 27、st 回车得到
发布工程中在 28、ipse 8.x\mpay_sms_http\WebRoot”〉
〈/Context〉