MVC4.0接口学习
/// <summary>
/// 正则验证身份证号是否合法
/// </summary>
/// <param name="sIdCard"></param>
/// <returns></returns>
public bool CheckIDCard(string sIdCard)
{
return Regex.IsMatch(sIdCard, @"(^\d{17}(?:\d|x)$)|(^\d{15}$)");
}
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
项目中有两个网中,其中WebService是接口:
题目是:
|
接口名称 |
心跳(附近) |
url |
http://202.102.90.169:8081/sys.asmx/HeartBeat?im=A000022DAC8C@&ln=xxxx&la=xxxxx&p=江苏省&c=南京市&d=建邺区 |
|
参数 |
参数1: im,设备的imei 参数2: ln,用户当前经度 参数3: la,用户当前纬度 参数4: p, 省(province) 参数5: c,市(city) 参数6: d 区(district) |
||
|
返回值 |
{“r”:”0”,”msg”:”成功,无需下发信息”} {“r”:”1”,”msg”:”成功,有新任务待接收”} {“r”:”2”,”msg”:”请求参数错误”} ()字符串的json格式 |
||
|
备注 |
这个题目的目的就是,将这几个参数获取过来,对应的1.更新B_VS_Curpos服务车当前位置表;2.向B_VEH_TRACK服务车轨迹表中添加记录3.从T_TASK_INFO表中获取此imei的车是否有新任务此处同时满足TI_STATUS N NUMBER(2) Y "任务状态(1:待下发;2:下发到服务站;3:下发到服务人员;4:拒绝任务; 5:任务开始;6:到达目的地;7:维修开始;8:配件申请;9:配件申请已审核; 10:配件申请已驳回;11:维修完成;12:任务完成;13:强制结束)"及TI_STATUS=3 |
||
解题方法:
在WebServiceController中添加Json方法
地址的写法是
http://localhost:3361/WebService/HeartBeat?im=VS_IMEI1&ln=10&la=10&p=jiangsu&c=nanjing&d=jiangning
其中WebService表示的是WebServiceController
HeartBeat表示的是WebServiceController内的JsonResult HeartBeat方法
地址上的im ln la等参数,直接在方法的参数上写HeartBeat(string im, string ln, string la, string p, string c, string d)获取过来
如果要求返回的是 这个样子 {"r":"","msg":"","info":[{"n":"li"}]}
说明:info的那部分后面其实是一个数组
return Json(new
{
r = r,
msg = msg,
info = new object[] {
new { n = "li" }
}
}, JsonRequestBehavior.AllowGet);
返回{“r”:”0”,”msg”:”成功,无需下发信息”}
去掉数组即可
return Json(new
{
r = r,
msg = msg
}, JsonRequestBehavior.AllowGet);
/// <summary>
/// 心跳
/// </summary>
/// <param name="im">设备的imei</param>
/// <param name="ln">用户的当前经度</param>
/// <param name="la">用户的当前纬度</param>
/// <param name="p">省(province)</param>
/// <param name="c">市(city)</param>
/// <param name="d">区(district)</param>
/// <returns></returns>
public JsonResult HeartBeat(string im, string ln, string la, string p, string c, string d)
{
int r = 0; string msg = "";
if (im == "" || ln == "" || la == "" || p == "" || c == "" || d == "" || im == null || ln == null || la == null || p == null || c == null || d == null)
{ r = 2; msg = "请求参数错误"; }
else
{
DbAccessOracle DbAccessor = new DbAccessOracle();
//如果b_vs_curpos 中服务车当前位置信息 没有此imei值的数据 返回请求参数错误
string sql =string.Format(@"select count (vs_imei) from b_vs_curpos where vs_imei='{0}'",im);
int imeicount=Convert.ToInt32(DbAccessor.GetScalar(sql));
if (imeicount <= 0)
{
r = 2; msg = "请求参数错误";
}
else
{
try
{
//事务处理 更新和插入的功能
ArrayList al = new ArrayList();
//更新B_VS_CurPos中服务车当前位置信息
string mySql01 = string.Format(@"update b_vs_curpos set vc_long={0},vc_lat={1},vc_long_encrypt={0},vc_lat_encrypt={1},province='{2}',city='{3}',area='{4}' where vs_imei='{5}'", ln, la, p, c, d, im);
//插入B_VEH_TRACK 服务车轨迹表 服务车当前位置信息
string mySql02 = string.Format(@"insert into b_veh_track(vt_id,vs_imei,vt_long,vt_lat,vt_long_encrypt,vt_lat_encrypt,vt_province,vt_city,vt_area,vt_sysdate) values(to_number(to_char(sysdate,'yyyymmddhhmiss')),'{0}',{1},{2},{1},{2},'{3}','{4}','{5}',sysdate)", im, ln, la, p, c, d);
//string mySql03 = string.Format("select count(TI_TASK_ID) from T_Task_Info where VS_IMEI='{1}' and TI_STATUS=3", im);
al.Add(mySql01);
al.Add(mySql02);
//al.Add(mySql03);
bool istrue= DbAccessor.ExecuteSql(al);//此处是项目中自己封装的执行多条sql语句的事务方法
if (istrue)
{
// 查询有无新任务
string sqlTask = string.Format("select count(TI_TASK_ID) from T_Task_Info where VS_IMEI='{0}' and TI_STATUS=3", im);
int taskcount = Convert.ToInt32(DbAccessor.GetScalar(sqlTask));
if (taskcount > 0) { r = 1; msg = "成功,有新任务待接收"; }
else { r = 0; msg = "成功,无需下发信息"; }
}
else { r = 2; msg = "请求参数错误"; }
}
catch { r = 2; msg = "请求参数错误"; }
}
////更新B_VS_CurPos中服务车当前位置信息
//BVsCurpos bc = new BVsCurpos();
//int result = bc.updateVSCurposLocation(im, Convert.ToDouble(ln), Convert.ToDouble(la), p, c, d);
//if (result <= 0) { r = 2; msg = "请求参数错误"; }
//else
//{
// //插入B_VEH_TRACK 服务车轨迹表 服务车当前位置信息
// string mySql = string.Format(@"insert into b_veh_track(vs_imei,vt_long,vt_lat,vt_long_encrypt,vt_lat_encrypt,vt_province,vt_city,vt_area,vt_sysdate) values('{0}',{1},{2},{1},{2},'{3}','{4}','{5}',{6});", im, ln, la, p, c, d, DateTime.Now);
// DbAccessOracle DbAccessor = new DbAccessOracle();
// DbAccessor.ExecuteSql(mySql);
// //查询有无新任务
// string sql = string.Format("select count(TI_TASK_ID) from T_Task_Info where VS_IMEI='{1}' and TI_STATUS=3", im);
// int taskcount = Convert.ToInt32(DbAccessor.GetScalar(sql));
// if (taskcount > 0) { r = 1; msg = "成功,有新任务待接收"; }
// else { r = 0; msg = "成功,无需下发信息"; }
//}
}
return Json(new { r = r, msg = msg }, JsonRequestBehavior.AllowGet);
}
JsonRequestBehavior.AllowGet
表示允许使用get方式获取地址参数等信息
/// <summary>
/// 执行多条SQL语句,返回执行是否成功
/// </summary>
/// <param name="sqls"></param>
/// <returns></returns>
public bool ExecuteSql(ArrayList sqls)
{
bool success = true;
Open();
OracleCommand cmd = new OracleCommand();
OracleTransaction trans = oracleConnection.BeginTransaction();
cmd.Connection = oracleConnection;
cmd.Transaction = trans;
try
{
foreach (string str in sqls)
{
cmd.CommandText = str;
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch (Exception ex)
{
success = false;
trans.Rollback();
}
finally
{
Close();
Dispose();
}
return success;
}
程序编好后:
在地址栏输入地址及参数,回车,出现此弹出窗口
此内容保存起来:
其返回的内容就是题目所要求的格式内容
/// <summary>
/// 用户登录
/// </summary>
/// <param name="im"></param>
/// <param name="un">用户名</param>
/// <param name="pwd">用户密码</param>
/// <returns></returns>
public JsonResult UserLogin(string im, string un, string pwd)
{
string r = "", msg = "", realname = "";
bool istrue = false;
//判断imei号在手持终端(服务车)表(B_VEH_SERVICE)中是否存在 不存在 设备未注册
if (ExistIMEI(im))
{
//判断用户名和密码是否匹配
string sql = string.Format("select SS_REALNAME from b_service_staff where ss_name='{0}' and SS_PWD='{1}'", un, pwd);
//count(ss_name)
try
{
realname = Convert.ToString(DAO.GetScalar(sql));
r = "0"; msg = "登录成功"; istrue = true;
}
catch { r = "2"; msg = "登录失败,用户名或密码错误"; }
}
else { r = "1"; msg = "该设备未注册"; }
object result = null;
if (istrue)
{
result = new
{
r = r,
msg = msg,
info = new object[] {
new { n = realname }
}
};
}
else
{
result = new
{
r = r,
msg = msg
};
}
return Json(result, JsonRequestBehavior.AllowGet);
}
以上,通过黄色的部分与以下普通的
return Json(new { r = r, msg = msg }, JsonRequestBehavior.AllowGet);
相比
可以看出返回的Json 都是object 其中{}内部的内容可以直接是普通的字符串,也可以是object数组等等
MVC4.0接口学习的更多相关文章
- 跟我一起学习ASP.NET 4.5 MVC4.0(五)(转)
前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(一)(转)
由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最近想给团队成员做一个系统的解说,让大家都可以学习一下ASP. ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(二)
上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一))我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的.因为这一些列主要是要给ASP ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(一)
跟我一起学习ASP.NET 4.5 MVC4.0(一) 由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(五)
前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...
- 跟我一起学习ASP.NET 4.5 MVC4.0 (转)
跟我一起学习ASP.NET 4.5 MVC4.0(一) 由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(六)(转)
这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系统,VS2012和SQLServer 2012,顺便抽空继续一篇.随着VS2012 RC版本的放出,ASP.NET M ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(四)(转)
前几个文章中介绍了一些关于MVC4.0的东东,今天我们来看一下登陆验证,也可以说是权限验证,即AuthorizeAttribute.这个可以使用在控制器Controller上,也可以使用在Action ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(三)(转)
今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用.了解了这些就可以对MVC进一步认识,相信很多人都对M ...
随机推荐
- Docker镜像与仓库(四)
Dockerfile方式创建镜像 https://hub.docker.com/_/centos/ #找一个centos6.6 的dockerfile链接 [root@linux-node1 ~]# ...
- ps 和 top
ps 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处 ...
- 【JAVA基础】07 面向对象2
1. 代码块的概述和分类 面试的时候会问,开发不用或者很少用 代码块概述 在Java中,使用 {} 括起来的代码被称为代码块. 代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态 ...
- Express 文档(常见问题)
常见问题 我该如何构建我的应用程序? 这个问题没有明确的答案,答案取决于你的应用程序规模和所涉及的团队,为了尽可能灵活,Express在结构方面没有做出任何假设. 在你喜欢的任何目录结构中,路由和其他 ...
- 解决layui动态追加的点击事件不起作用问题
2019独角兽企业重金招聘Python工程师标准>>> //不起作用 $('#demo').on('click', function() { layer.msg('响应点击事件'); ...
- #Week4 Logistic Regression
一.Classification 主要讨论二元分类. 线性回归处理分类问题显然不靠谱,所以采用逻辑回归. 二.Hypothesis Representation 假设函数变为\(h_\theta(x) ...
- Codeforce 270D Greenhouse Effect
Emuskald is an avid horticulturist and owns the world's longest greenhouse - it is effectively infin ...
- 推荐一款Python数据可视化神器
1. 前言 在日常工作中,为了更直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,人们常常借助可视化帮助我们更好的给他人解释现象,做到一图胜千文的说明效果. 在Python中,常见的数据可视化库有 ...
- Java流式思想和方法引用
目录 Java流式思想和方法引用 1. Stream流 1.1 概述 传统集合的多步遍历代码 Stream的更优写法 1.2 流式思想的概述 1.3 获取流 1.4 常用方法 ①逐一处理:forEac ...
- mui指南
转自https://www.cnblogs.com/koleyang/p/5146623.html http://dev.dcloud.net.cn/mui/ui/index.html#mask ht ...