电信增值业务及软件开发一
实践报告
学院:软件学院专业:软件工程班级:学号:
姓名2:指导老师:
2013年06月22日
实验一:短消息MO指令匹配算法一、实验步骤及实验结果
实验代码:
#include
#include
void main()
{
char S[100];
char T[50];
cin>>S;
cin>>T;
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 { if(k==0||T[j-1]==T[k-1]) { j++; k++; next[j]=k; } else k=next[k]; } i=0; j=0; while(j!=len2&&i { count++; if(S[i]!=T[j]) { if(j==0) i++; else j=next[j+1]-1; } else { i++; j++; } } cout< cout< cout< if(j==len2) { cout<<"匹配成功,初始匹配成功的位置为第:"< cout<<"匹配次数为:"< } else { cout<<"匹配次数为:"< cout<<"匹配失败"< } } 二、实验截图: 二、心得: 通过这次实验,用C/C++/C#或Java编程实现短消息MO指令匹配算法,该算法能够实现短消息MO指令的长号码和指令内容的模糊和精确匹配、空指令匹配功能。 实验二:短消息增值业务软件开发平台及接口 一、实验步骤及实验结果 ( 1 )实验内容“根据短信增值业务软件开发平台的操作手册熟悉短信增值业务软件开发平台”的实验步骤如下: 登陆短信增值业务平台 http://172.22.118.16:8081/sms/ 创建一个属于自己的业务,按需求和格式定义业务名称、指令类型、匹配方式、资费、处理方式、通道并送发审核。 实验结果 短信成功接收到,并且程序返回值为“0” 结果分析 通过平台下发的测试短信最终预期收到。说明在平台上创建的业务通道,格式正确。并且已经通过管理员的审核,能够合法的使用平台提供的通道资源。测试代码的发送成功还说明在程序中调用平台接口的方式是正确的。 ( 2 )实验内容“根据短消息增值业务软件开发平台的接口手册,熟悉短消息增值业务软件开发平台的HTTP接口、API接口、Web Service接口等的使用方法”的实验步骤如下: http接口的参数定义格式: 在程序中调用已通过审核的业务 String url = "http://172.22.118.16:8081/sms/http/SendSms"; // 读取接口传递过来的参数并封装数据 RequestData rd = new RequestData(); rd.setPhone("159********"); rd.setServiceId("2"); rd.setChannelId("1"); rd.setDestNumber("1"); rd.setLinkId(""); 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://172.22.118.16:8081/sms/http/SendSms"; // 读取接口传递过来的参数并封装数据 RequestData rd = new RequestData(); rd.setPhone("159********"); rd.setServiceId("2"); rd.setChannelId("1"); rd.setDestNumber("1"); rd.setLinkId(""); rd.setMoId(""); rd.setSpNumber(""); rd.setFunctionType(""); rd.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(); } } 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; private 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.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; } 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; } public 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(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.java package com.cqupt.http; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import https://www.wendangku.net/doc/4e16796279.html,.HttpURLConnection; import https://www.wendangku.net/doc/4e16796279.html,.URL; import https://www.wendangku.net/doc/4e16796279.html,.URLEncoder; public class RequestUtil { private RequestUtil() { } private static RequestUtil requestUtil = null; /** * 单例模式,返回RequestUtil的实例化对象 * @return requestUtil */ public static RequestUtil getInstance() { if (requestUtil == null) { requestUtil = new RequestUtil();// 需要的时候才new,节省空间。 } return requestUtil; } /** * 拼接字符串 * @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() + "&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 (UnsupportedEncodingException 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 = 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 = 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) { 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.根据短信增值业务软件开发平台的接口手册熟悉短信增值业务软件开发平台的HTTP接口等。 2.调用短信增值业务软件开发平台的HTTP接口,编写一个Web程序实现“趣味答题”短信增值业务。 实验步骤 创建业务 因为本次实验要调用HTTP接口,所以我们在选在处理方式的时候要选择HTTP转发 提交审核 审核通过 业务实现 数据库设计 根据整个项目情况可以看出这个业务平台需要的数据表:用户答题信息表User_message、题目信息表title_message。 title_message表结构 user_message表结构 三、心得 通过本次实验熟悉了大汉三通公司的短信增值业务软件开发平台,掌握了短息增值业务软件的入门知识。但目前还只是初步会使用大汉三通公司封装打包提供的功能,自己对于底层的实现还不能够明确掌握。 实验三:基于HTTP接口的短消息编程 一、实验步骤及实验结果 1、将文件mpay_sms_http导入Myeclipse中 2、配置web.xml如图 3、发布工程及修改路径 在地址栏中输URL:http://127.0.0.1:8080/mpay_sms_http/http/httpTest回车得到 发布工程中在 unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 创建数据库 输入密码进入配置界面 输入show databases;命令查看已经存在的数据库 输入create database test 得到 5、使用navicat新建数据库将答题的数据输入,如图 上传提交 二、心得 熟悉短信增值业务软件开发平台HTTP接口等,掌握短信增值业务软件开发的HTTP接口编程。