客户端实验对接说明文档


由于客户端对接与平台页面无法产生信息交互,所以需与web版实验区分开做特殊登录获取用户信息接口

平台提供使用token登录的方式供实验资源获取用户信息及实验记录ID(eid),用于对应当前实验产生成绩回传

Host说明:
接口URL的Host是指 平台访问链接前缀
例:测试平台登录页面为:http://rp.owvlab.net/virexp/login
Host则是:http://rp.owvlab.net/virexp/
*测试完成后不知道正式平台的Host可以找项目负责人提供


平台提供以下两种接口供客户端实验对接使用

一、Token 码登录获取用户信息及实验记录eid接口(也适用于Web实验获取用户信息)

1.获取token:

对于客户端:

平台在实验操作页提供token,客户端启动后,提供token验证码填写页,学生复制平台token到客户端中,客户端使用token调用http接口获取用户信息及实验记录ID(eid)

markdown

注:若测试完成后进入正式平台页面没有显示token,可找平台这边的项目负责人沟通增加.

进入实验客户端实验窗口粘贴token到实验内即可


对于web版:

对于web版实验,平台会在web实验链接后面拼接一个token参数,使用代码获取到链接后面的token即可

markdown

    //js获取链接参数:
    var token = getUrlParam("token");
    //获取参数
    function  getUrlParam (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
        var r = window.location.search.substr(1).match(reg);  //匹配目标参数
        if (r != null) return unescape(r[2]); return null; //返回参数值
    }


3.使用token获取用户信息及实验记录ID:

url: Host/outer/getMessageByToken

请求参数

参数名 数据类型类型 数值
param string {"token":"从平台复制的token"} (base64加密)

postman示例:
markdown

返回参数(base64加密)
正确返回(base64解码后):

{  
	"status":"000",  
	"eId":"8a8091076c28614a016c286748760028",  
	"userId":"8a808baf66f6f2ac0166f6f6bf2e004c",  
	"numberId":"3242342",  
	"name":"张三",  
	"groupName":"无",  
	"role":"student"  
}

错误信息返回(base64解码后):

{  
	"status":"909",  
	"statusMessage":"token失效"  
}

返回字段名称 数据类型及各式定义 字段含义
status String 状态码
eId String 实验记录ID
userId String 学生id
name String 姓名
numberId String 学生学号
groupName String 班级
role String 角色(student/teacher)

登录完成
接下来就可以使用eid调用接口回传给平台数据

详情参考接口文档

二、使用账号密码登录接口

通过此接口可以使用账号密码登录平台,获取用户信息学生已被安排的所有实验记录列表

注意:由于实验空间账号密码平台无法获取,故此接口不支持实验申报使用!

url: Host/outer/login

1.请求参数

参数名 数据类型类型 数值
param string {"account":"用户名","password":"用户密码","esid":"实验资源唯一标识符"} (base64加密)

注:esid统一由资源方自定义提供,建议“实验名称缩写+日期=esid”,例如:电子电路实验:dzdlsy20190801,用以区分实验资源。

base64编码
markdown
postman示例:
markdown

2.返回数据
正确返回:

{
    "role":"student",
    "numberId":"xuesheng",
    "name":"学生",
    "resourceId":"2c9180d66ef7be31016f372f36bd0bdb",
    "expList":[
        {
            "id":"2c9180d66ef7be310170c3d27e9b6728",
            "expName":"java从入门到入土",
            "name":"java从入门到入土",
            "lectureName":"示范性实验",
            "teacher":"欧阳",
            "createTime":"2020-03-10 09:41:57"
        },
        {
            "id":"2c9180d66ef7be31016f372fd61e0bef",
            "expName":"java从入门到入土",
            "name":"java从入门到入土",
            "lectureName":"示范性实验",
            "teacher":"欧阳",
            "createTime":"2019-12-24 09:17:19"
        }
    ],
    "status":"000",
    "statusMessage":"登陆成功!"
}

错误信息返回:

{
    "status":"101",
    "statusMessage":"用户信息不存在!"
}

3.返回参数说明

返回字段名称 数据类型及各式定义 字段含义
status String 状态码
role String 角色类型(student,teacher)
numberId String 学号或工号
name String 姓名
className String 所属班级
resourceId String 实验资源id
expList List 实验信息列表

expList:

返回字段名称 数据类型及各式定义 字段含义
id String 实验记录唯一标识符(EID)
expName String 实验名称
lectureName String 开课名称
teacher String 所属教师
createTime String 开始时间

注意:expList为学生在平台的生成实验记录列表,如果只有一条,可直接获取第一条,若存在多条,需将列表里的信息展示出来供学生选择对应的实验记录,主要是实验验记录ID(eid)的选择,后面的成绩对接及实验报告接口等都需要此eid

4.若测试平台获取expList为空,需先进入测试平台生成一条学生记录,再调用接口获取:

测试平台进入
markdown
进入实验操作页:
markdown

再调用接口即可获取expList


完成登录获取到用户信息及实验记录id(eid)后,请根据对接群文件里的<虚拟仿真平台通用接口文档.pdf>对接http接口即可