跳转至

获取考生成绩接口

注: 所有接口只针对旗舰会员提供,非旗舰会员无法调用,所有开放平台接口默认共享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)
}