C# 物联网开发API接口

【提纲】

1、如何写验证登录(参数:账号,密码)

2、switch方法的使用

3、json格式的使用方法,一些函数的使用注意事项

【开始】

<%@ WebHandler Language="C#" Class="check" %>
/*******************************************
 * 功能:管理客户端验证其登录合法性 2020.8.13
 * 参数:
 * action[必须]关键词决定查询类型
 * 根据自定义方法 传递参数 查询结果反馈打印
 * 举例 iot.jiuai.ltd?action=check&token=身份证&其他参数体
*******************************************/
using System;
using System.Text;
using System.Web;
using System.Data;
using System.Web.Services; //WebMethod 依赖于此引用
using DatabaseHelper; //数据库 增删改查 的方法 配置等
using System.Data.SqlClient; //sql命名空间
using md5Helper; //md5加密 验证密码时可用到

第一行:声明语言及类的名称(文件名称)

第二步:引用命名空间(需要多少引用多少,且第三方的要应用组件或部件)或自写的方法类等

调用接口的方法:url 方式之 get的方法

public class check : IHttpHandler 
{
      //一些公共的变量或必须的参数 在此类最上层申请,多个方法可以共享调用
}

public void ProcessRequest (HttpContext context) 
{
     //所有参数处理入口函数(如果多个方法 通过不同的参数进行 分支处理)
    //此处用的是 switch 语句;下面举例说明
}
public void ProcessRequest (HttpContext context) 
    {
        context.Response.ContentType = "text/plain";//参数类型
        //必须参数 在类的顶层申请变量
        act = context.Request["action"];	//【必须】 参数名称可以自己定义
        token = context.Request["token"];//【必须】访问时携带,登录时查询更新      
        string regpacket="";                      //注册包(设备标识码)
        try
        {
            //********连接数据库***************
            if (!SqlHelper.isConnected)
                SqlHelper.check_SqlConn();           
            //**********************************  
            //本教程 对数据库进行操作 所以必须连接数据库(自定义类方法)
          
            //针对不同类型机型不同分支处理使用switch语句
            switch (act)
            {//目的分类型查询,名称自定义(这里分支名称参数和方法名称一致便于查询调用)
                case "login"://通过账号密码获取身份证token
                    string uc = context.Request["uc"];               //此方法需要2个参数 账号和密码
                    string pwd = context.Request["upwd"];      //密码
                    context.Response.Write(login(uc,pwd));//查询并返回结果json格式
                    break;
                case "getDevList"://获取该token下拥有的设备列表
                    uid = getUidbyToken(token);
                    context.Response.Write(getDevList(token));
                    break;
                case "getUserInfo"://通过token获取身份信息
                    uid=getUidbyToken(token);
                    context.Response.Write(ujson);
                    break;
                case "checkDevValidity"://检查设备是否有效
                    uid = getUidbyToken(token);
                    regpacket = context.Request["regpacket"];
                    context.Response.Write(checkDevValidity(regpacket));
                    break;
                case "actionBox"://激活设备(针对未激活的设备)
                    uid = getUidbyToken(token);
                    regpacket = context.Request["regpacket"];
                    context.Response.Write(actionBox(regpacket));//针对超级管理员可以做各种设备激活
                    break;
                default://所有未定义的方法,一律返回当前时间
                    context.Response.Write(DateTime.Now);
                    break;
            }
        }
        catch (Exception ex)
        {//返回异常/错误描述
            context.Response.Write("Error:" + ex.Message.ToString());
        }        
    }

下一节讲解,根据传递的参数 账号,密码 读取数据库进行匹配

如果成功:返回用户的信息或令牌(token)其他所有操作必须有此身份令牌

如果失败:返回错误提示或异常提示

注意事项:

1)返回值:全部是json格式,至少3部分组成 data,code,time

2)code:成功返回200,失败或无匹配结果返回0,错误或异常返回-1

3)data具体内容,可能是json数据组哦(如列表的[{},{},{}])

4)time系统时间

220v交流接触器接法图参考

380v接线图参考

说明:控制元件及开关就是 本模块的 某路 NO 出来的线 (一般N线或零线)

从模块的COM进入,从NO出来接线到 交流接触器的 一个L1上

弱电控制强电接线图参考

同步连接关注:https://www.toutiao.com/i6860411806385439240/