接口信息
接口地址
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;
}