分享王者荣耀官方战力查询接口:直接调用王者营地API获取英雄战力数据
·
简介:发现一个可用的官方战力接口
最近在开发王者荣耀相关的数据工具时,我发现了一个可以直接使用的官方战力查询接口。这个接口来自王者营地,能够准确获取英雄的战力排名数据。下面分享具体的调用方法和实现代码。
接口详情与直接调用方法
基础请求信息
POST https://kohcamp.qq.com/honor/ranklist
Content-Type: application/json
完整可用的请求示例
这是我实际测试可用的请求代码:
<?php
// 王者营地战力接口调用示例
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://kohcamp.qq.com/honor/ranklist',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"recommendPrivacy": "0",
"areaId": "1",
"adcode": "210400",
"roleId": "2120721615",
"heroId": "168"
}',
CURLOPT_HTTPHEADER => array(
'token: KPRHXTLQWnM_lCCWYNKc7NJ7halQJCR-Mgq1ipnr9umnn7FTaThAEm8yBcEgbPilNiwWStr38oxJmJHMxA_Z8BvIeD0Akj',
'userId: 538599124',
'User-Agent: Apifox/1.0.0 (https://apifox.com)',
'Content-Type: application/json',
'Accept: */*',
'Host: kohcamp.qq.com',
'Connection: keep-alive'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
参数配置说明
请求头参数
- token: 认证令牌(自己抓包获取)
- userId: 用户ID(同上)
请求体参数
{
"recommendPrivacy": "0",
"areaId": "1", // 可填1,2,3,4 分别对应qq安卓,ios安卓,qq微信,ios微信
"adcode": "210400", // 行政区划代码
"roleId": "2120721615", // 自己的roleId(抓包获取)
"heroId": "168" // 英雄ID:168代表韩信
}
如何获取自己的参数
1. 获取英雄ID(heroId)
这个有官方接口:
https://pvp.qq.com/web201605/js/herolist.json
常见英雄ID参考:
- 168: 韩信
- 144: 程咬金
- 123: 吕布
- 107: 赵云
- 190: 诸葛亮
2. 获取areaId对应关系
- “1”: 安卓QQ区
- “2”: 苹果QQ区
- “3”: 安卓微信区
- “4”: 苹果微信区
3. 获取adcode(行政区划代码)
可以根据需要查询的城市修改:
- 110000: 北京市
- 310000: 上海市
- 440300: 深圳市
- 210400: 抚顺市(示例中使用)
接口返回数据解析
成功调用后会返回JSON格式数据:
{
"result": 0,
"returnCode": 0,
"returnMsg": "",
"data": {
"list": [
{
"rankNo": 1,//排行名次
"roleId": "2754841645",//这个人的roleId
"roleIcon": "https://thirdqq.qlogo.cn/ek_qqthird/AQKE09RBBysP5iaMU0vkysEjlIFobq1O7L4iafAYMddSw5QZdHdbyUFD7qvy1ORiaAAWQTbS4nWJial6glweWicuMGtobkyvMT6NmibGEJBTjWl0bL7u3f1cI/100",//头像
"roleName": "人间难寻绝色",//游戏昵称
"roleJobName": "传奇王者",//游戏段位
"rankValue": "13017",//榜单分数
"rankChange": "0",
"rankValChange": "0",
"userId": "1898030525",
"userName": "我211低调",//用户名
"serverId": 1380,
"openid": "",
"areaId": 1,//大区
"isHide": false
}]
}
}
封装成可复用的函数
<?php
/**
* 获取王者荣耀英雄战力数据接口
*/
header('Content-Type: application/json; charset=utf-8');
// 获取请求参数
$roleId = isset($_GET['roleId']) ? $_GET['roleId'] : (isset($_POST['roleId']) ? $_POST['roleId'] : '');
$heroId = isset($_GET['heroId']) ? $_GET['heroId'] : (isset($_POST['heroId']) ? $_POST['heroId'] : '');
$areaId = isset($_GET['areaId']) ? $_GET['areaId'] : (isset($_POST['areaId']) ? $_POST['areaId'] : '');
$adcode = isset($_GET['adcode']) ? $_GET['adcode'] : (isset($_POST['adcode']) ? $_POST['adcode'] : '');
$token = isset($_GET['token']) ? $_GET['token'] : (isset($_POST['token']) ? $_POST['token'] : '');
$userId = isset($_GET['userId']) ? $_GET['userId'] : (isset($_POST['userId']) ? $_POST['userId'] : '');
// 验证必需参数
$requiredParams = ['roleId', 'heroId', 'areaId', 'adcode', 'token', 'userId'];
$missingParams = [];
foreach ($requiredParams as $param) {
if (empty($$param)) {
$missingParams[] = $param;
}
}
// 如果有缺失参数,返回错误
if (!empty($missingParams)) {
echo json_encode([
'code' => 400,
'message' => '参数缺失',
'data' => [
'missing_params' => $missingParams,
'required_params' => $requiredParams
]
]);
exit;
}
/**
* 获取王者荣耀英雄战力数据
* @param string $roleId 游戏角色ID
* @param string $heroId 英雄ID
* @param string $areaId 大区
* @param string $adcode 城市代码
* @param string $token API认证令牌
* @param string $userId 用户ID
* @return array 返回解析后的数据
*/
function getHeroPowerData($roleId, $heroId, $areaId, $adcode, $token, $userId) {
$postData = json_encode([
"recommendPrivacy" => "0",
"areaId" => $areaId,
"adcode" => $adcode,
"roleId" => $roleId,
"heroId" => $heroId
]);
$headers = [
'token: ' . $token,
'userId: ' . $userId,
'User-Agent: Apifox/1.0.0 (https://apifox.com)',
'Content-Type: application/json',
'Accept: */*',
'Host: kohcamp.qq.com',
'Connection: keep-alive'
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://kohcamp.qq.com/honor/ranklist',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_TIMEOUT => 10
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
return [
'code' => 500,
'message' => '请求失败: ' . $curlError,
'data' => null
];
}
$result = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
return [
'code' => 500,
'message' => 'JSON解析失败: ' . json_last_error_msg(),
'data' => $response
];
}
return [
'code' => 200,
'message' => 'success',
'data' => $result
];
}
// 调用函数并输出结果
$result = getHeroPowerData($roleId, $heroId, $areaId, $adcode, $token, $userId);
echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>
注意事项和使用建议
1. 接口稳定性
- 这个接口目前稳定可用
- 但官方可能会随时调整
- 建议做好错误处理
2. 请求频率限制
- 不要过于频繁调用
- 建议间隔5秒以上
- 避免被服务器限制
3. 数据准确性
- 数据来源官方,准确度高
- 战力数据每天更新
- 排名数据实时变化
实际应用场景
1. 个人战力查询工具
可以基于此接口开发微信小程序或网页工具,方便玩家查询自己的英雄战力。
2. 战队数据分析
为战队管理开发数据分析工具,了解队员的英雄战力情况。
3. 游戏数据统计
收集和分析不同英雄的战力分布情况。
4. 排名监控
监控特定英雄的排名变化趋势。
常见问题解答
Q: 这个接口需要付费吗?
A: 完全免费,直接调用即可。
Q: token会过期吗?
A: 当前提供的token长期有效,但建议获取自己的token。
Q: 可以商用吗?
A: 个人学习和研究使用没问题,商用需考虑腾讯相关政策。
Q: 如何获取更多英雄的ID?
A: 可以通过网络搜索"王者荣耀英雄ID对照表"获取完整列表。
总结
这个王者营地战力查询接口非常实用,可以直接获取到官方权威的战力数据。通过简单的HTTP请求就能获得详细的英雄战力排名信息,对于开发王者荣耀相关的工具或进行数据分析很有帮助。
如果你在调用过程中遇到问题,或者发现了更好的使用方法,欢迎交流讨论!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)