文件接口

文件接口:无file参数返回版本信息,带file参数下载文件,info=1返回文件信息

接口状态:正常
返回接口列表

接口信息

接口地址
https://verify.rokig.fun/api.php?api=file
返回格式
json
请求方式
json
请求示例

请求参数说明

名称变量必填类型说明
接口 api GET 填写file
应用 app GET 填写后台应用APPID
文件ID file GET 填写网盘文件ID;不填时返回该应用的版本信息
文件信息 info GET 填写1时返回文件信息JSON,默认直接下载文件

返回参数说明

名称类型说明
code Integer 返回状态码,200为成功
appid Integer 应用ID
version String 软件版本号
changelog String 更新日志
name String 文件名
filesize Integer 文件大小(字节)
url String 文件下载地址
msg String 错误时返回的错误信息

返回示例

返回示例
// 方式一:不带 file 参数,返回该应用版本信息
{
  "code": 200,
  "msg": {
    "appid": 10001,
    "version": "1.0.0",
    "changelog": "1、修复已知问题\n2、优化登录性能",
    "name": "demo.apk",
    "filesize": 5242880,
    "url": "https://verify.rokig.fun/api.php?api=file&app=10001&file=1"
  },
  "time": 1754295135,
  "check": "xxxx"
}

// 方式二:带 file=文件ID 直接下载(返回文件二进制内容)
// 方式三:带 file=文件ID 且 info=1,返回文件信息
{
  "code": 200,
  "msg": {
    "appid": 10001,
    "name": "demo.apk",
    "filesize": 5242880,
    "version": "1.0.0",
    "changelog": "1、修复已知问题\n2、优化登录性能",
    "url": "https://verify.rokig.fun/api.php?api=file&app=10001&file=1"
  },
  "time": 1754295135,
  "check": "xxxx"
}

// 失败时返回 JSON:
{ "code": 201, "msg": "文件不存在或已封禁", "time": 1754295135, "check": "xxxx" }

错误码参照

名称类型说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

示例代码

C++ 示例代码
// R验云网络验证 - 文件接口 接口调用示例(C++)
// 编译:g++ -o file file.cpp -lcurl
#include <iostream>
#include <string>
#include <fstream>
#include <curl/curl.h>

// 回调函数:接收数据
static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}
// 回调函数:将下载内容写入本地文件
static size_t save_callback(void *contents, size_t size, size_t nmemb, void *userp) {
    std::ofstream *out = (std::ofstream*)userp;
    out->write((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    std::string appid = "你的APPID";  // 后台应用 APPID
    std::string base = "https://verify.rokig.fun/api.php?api=file&app=" + appid;

    // 1) 查询版本信息(不带 file 参数)
    {
        CURL *curl = curl_easy_init();
        std::string response;
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, base.c_str());
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
            curl_easy_perform(curl);
            curl_easy_cleanup(curl);
            std::cout << "版本信息: " << response << std::endl;
        }
    }

    // 2) 下载文件(带 file 参数)
    std::string fileid = "文件ID";    // 网盘文件ID
    std::string url = base + "&file=" + fileid;
    CURL *curl = curl_easy_init();
    std::ofstream out("download.bin", std::ios::binary);
    if (curl && out.is_open()) {
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, save_callback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        CURLcode res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        out.close();
        if (res != CURLE_OK) {
            std::cerr << "下载失败: " << curl_easy_strerror(res) << std::endl;
            return 1;
        }
    }
    std::cout << "下载完成: download.bin" << std::endl;
    return 0;
}