获取考生成绩接口¶
注: 所有接口只针对旗舰会员提供,非旗舰会员无法调用,所有开放平台接口默认共享10QPS
1、获取所有考生或者单一考生的考试记录¶
获取所有考生或者单一考生的考试记录:¶
GET https://api.kyexam.com/api/v1/student/queryresults
参数:¶
code=权限码&time=当前时间戳&eid=试卷id&loginValues=试卷验证信息&start=0&limit=30
参数说明:¶
- code 每个账户唯一对应的验证码,string类型,旗舰会员及以上可在系统设置->开放平台设置中获取。
- time 当前时间戳,例如1638768935。
- start 分页参数。
- limit 查询个数,最大为100。
- loginValues 如需查询单个考生的考试记录,需配合eid使用。
- eid 如需查询单个考生的考试记录,需配合loginValues使用,详见示例代码。
- Authorization 放到请求头的Token,详见示例代码。简单来说就是:将当前时间戳和您的code拼接起来,进行MD5加密而得。
如果操作成功,则返回:¶
{
"data":[
{
"viewResult":"https://api.kyexam.com/transgetresult?tid=xxx\u0026token=xxx", //试卷详情链接,其中 '\u0026' 为 '&' 符号, 需要转码方可正常使用。
"score":"2",//分数
"passed":"0",//考试是否及格
"status":"1",
"startTime":"1639647217",//考试考试时间
"endTime":"1639647236",//考试结束时间
"sid":"170597",
"loginValue":"n11",//登录字段
"name":"n11",//考生名字
"eid":"107264"//试卷id
},
{
"viewResult":"https://api.kyexam.com/transgetresult?tid=xxx\u0026token=xxx",
"score":"1",
"passed":"0",
"status":"1",
"startTime":"1639647122",
"endTime":"1639647132",
"sid":"170597",
"loginValue":"n11",
"name":"n11",
"eid":"107264"
}
],
"status":"ok",
"total":1877
}
如果操作失败,则返回:¶
接口使用示例:¶
package main
import (
"crypto/md5"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"strconv"
"time"
)
const (
Code = "xxx"
)
func main() {
host := "https://api.kyexam.com"
resource := "/api/v1/student/queryresults"
client := &http.Client{}
fullPath := host + resource
req, _ := http.NewRequest(http.MethodGet, fullPath, nil)
time64 := time.Now().UTC().Unix()
ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
req.Header.Set("Authorization", ParseToken)
q := req.URL.Query()
q.Add("code", Code)
q.Add("time", strconv.Itoa(int(time64)))
q.Add("start", "0")
q.Add("limit", "2")
// ↑↑获取所有考生考试数据↑↑
// ↓↓获取单一考生参与考试的记录↓↓
// q.Add("loginValues", "n11")
// q.Add("eid", "107264")
q.Add("time", strconv.Itoa(int(time64)))
req.URL.RawQuery = q.Encode()
resp, err := client.Do(req)
if err != nil {
log.Println(err)
return
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return
}
// fmt.Println(string(b))
f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
f.Write(b)
}
2、获取试卷列表¶
获取试卷列表¶
GET https://api.kyexam.com/api/v1/student/getexams
参数:¶
code=权限码&time=当前时间戳&sid=考生id&gid=组id&catid=分类id&keyword=搜索关键字&userId=用户id&start=0&limit=30
参数说明:¶
- code 每个账户唯一对应的验证码,string类型,旗舰会员及以上可在系统设置->开放平台设置中获取。
- time 当前时间戳,例如1638768935。
- start 分页参数。
- limit 查询个数,最大为100。
- sid 考生id。
- gid 考生分组id。
- keyword 搜索试卷标题关键字
- userId 用户id
如果操作成功,则返回:¶
{
"data": [
{
"title": "sssssssss",
"description": "你不点进来,怎么知道你很厉害",
"status": "永久有效",
"attempts": "无限制",
"available": 1,
"eid": "3504",
"category": "婴童教育",
"stuTimes": 0,
"totalTimes": 0,
"createTime": "1691473157",
"img": "https://fs.youkaoshi.cn/papercover/company/company_1.png",
"url": "http://10.0.50.159:9874/doexam/aWoeKL89V5.html",
"total_score": 1,
"pass_score": 0.6,
"starttime": 1691473140,
"endtime": 1691473140
},
{
"title": "ccccccssss",
"description": "你不点进来,怎么知道你很厉害",
"status": "永久有效",
"attempts": "无限制",
"available": 1,
"eid": "3503",
"category": "婴童教育",
"stuTimes": 0,
"totalTimes": 1,
"createTime": "1688708778",
"img": "https://fs.youkaoshi.cn/papercover/teacher/teacher_4.png",
"url": "http://10.0.50.159:9874/doexam/EDobq5Lr78.html",
"total_score": -5,
"pass_score": -3,
"starttime": 1688709240,
"endtime": 1688709240
}
],
"status": "ok",
"total": 3
}
如果操作失败,则返回:¶
接口使用示例:¶
package main
import (
"crypto/md5"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"strconv"
"time"
)
const (
Code = "xxx"
)
func main() {
host := "https://api.kyexam.com"
resource := "/api/v1/student/getexams"
client := &http.Client{}
fullPath := host + resource
req, _ := http.NewRequest(http.MethodGet, fullPath, nil)
time64 := time.Now().UTC().Unix()
ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
req.Header.Set("Authorization", ParseToken)
q := req.URL.Query()
q.Add("code", Code)
q.Add("time", strconv.Itoa(int(time64)))
q.Add("sid", "1")
q.Add("eid", "2")
q.Add("gid", "3")
q.Add("catid", "4")
q.Add("keyword", "5")
q.Add("userId", "6")
q.Add("start", "0")
q.Add("limit", "30")
req.URL.RawQuery = q.Encode()
resp, err := client.Do(req)
if err != nil {
log.Println(err)
return
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return
}
// fmt.Println(string(b))
f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
f.Write(b)
}