简介:本系统采用java(springboot)+微信小程序开发,可直接扫描程序码查看小程序效果。 在java中主要通过·调用皇室战争官方的api接口,实现宝箱顺序、用户基本信息的查询。 另:若读者会一些简单的前端,那么就可以开发出web网站版的皇室战争宝箱查询系统,所有的javaApi接口已经开发完成,只需要做好java和前端的链接。 微信端小程序名称: cr宝箱 功能:可查宝箱,可查历史数据
1.注册 皇室战争宝箱查询 系统的账号
1.登录 https://developer.clashroyale.com/,注册账号。芬兰的网站,虽然速度慢一点,但是肯定可以访问。注意自己的ip很重要,是自己的公网ip,不是本地ip。望诸君,注意。最终目的是为了获取token。
2.在java中调用 类似于爬虫访问皇室战争API官网
1.先把需要的jar包放到这里
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.3</version>
</dependency>
其他的看自己需求,往里面加,基本就这两个核心包。
2.访问皇室战争API的核心代码
1>代码为一个函数,该函数调用皇室战争API接口,需要注意的是 Authorization 参数,该参数要自己填写进去 格式为 “Bearer token令牌",看清,有个空格,诸君。 2>URL中的 %23 代表的函数为 # ,特殊字符转义 3>要是随便乱访问路径,随随便便会被封半小时多。注意安全。 4>该函数返回值为一个json,在java端并没有做很多处理,全部递给了小程序。
public static String returnUserInfo(String userTag){
System.out.println("开始获取用户的信息");
try{
userTag=userTag.replace("#","");
System.out.println(userTag);
String s="https://api.clashroyale.com/v1/players/%23"+userTag;
System.out.println("访问的URL-->"+s);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://api.clashroyale.com/v1/players/%23"+userTag);
httpGet.addHeader("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36");
httpGet.addHeader("Authorization",useIApi);
httpGet.addHeader("accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
httpGet.addHeader("cache_expires","20");
httpGet.addHeader("Access-Control-Allow-Origin","no-cors");
CloseableHttpResponse response = httpClient.execute(httpGet);
System.out.println(response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode()==200){
String string = EntityUtils.toString(response.getEntity(), "utf-8");
System.err.println(string);
httpClient.close();
return string;
}
httpClient.close();
}catch (Exception e){
System.out.println(e);
System.out.println("抛出异常 代码:2397852532");
return "-1";
}
return "-1";
}
3.java中的controller代码
这段代码完全没有什么技术含量
@RequestMapping("userInfo")
public @ResponseBody String returnUserInfo(String tag){
String userInfo=UserInfoTool.returnUserInfo(tag);
if(userInfo!="-1"){
return userInfo;
}
return "";
}
至此,java端的代码就开发完毕了。笔者在这里只是粘贴了一个示例,实际中,拥有多个接口,就不累赘展示了。
3.小程序端的开发
小程序端的开发,重点主要放在对java端传过来的json的处理上。大家重点在这里放到微信小程序的js上 ,小程序处理只用了一个主要的函数,放在下面,大家看看
1.小程序端对应的数据处理格式,该数据格式只对应用户的基本信息,比较复杂,这是从json中解出来的数据,大约能占json返回数据的十分之一。
data: {
showModal:true,
userInfo:{
tag:"",
name:"",
trophies:"",
bestTrophies:"",
wins:"",
losses:"",
battleCount:"",
threeCrownWins:"",
totalDonations:"",
tournamentCardsWon:"",
tournamentBattleCount:"",
currentSeason:{
rank:"",
trophies:"",
bestTrophies:"",
},
previousSeason:{
id:"",
rank:"",
trophies:"",
bestTrophies:"",
},
bestSeason:{
id:"",
rank:"",
trophies:"",
},
arena:{
id:"",
name:""
},
clan:{
tag:"",
name:"",
badgeId:"",
}
}
},
2.去云端请求皇室战争宝箱顺序的json,并将值赋值到data数据中。
1>自己java端的网址,需要更改 2>若要将小程序上传至微信,则需要https开头的网址,本地测试,不做要求
onLoadUserInfo :function(tag){
tag = tag.replace('#', '');
let that=this;
wx.showToast({title: '加载中', icon: 'loading', duration: 5000});
wx.request({
url: 'https://www.自己的网址.com:58479/cr/userInfo?tag='+tag,
success: function(res) {
console.log(">>>>>"+res.data.tag)
console.log(">>>>>id="+res.data.leagueStatistics.bestSeason.id)
const clan_tag = `clan.tag`
const clan_name = `clan.name`
const bestSeason_id = `bestSeason.id`
const bestSeason_rank = `bestSeason.rank`
const bestSeason_trophies = `bestSeason.trophies`
that.setData({
tag:res.data.tag,
name:res.data.name,
trophies:res.data.trophies,
bestTrophies:res.data.bestTrophies,
wins:res.data.wins,
losses:res.data.losses,
battleCount:res.data.battleCount,
threeCrownWins:res.data.threeCrownWins,
totalDonations:res.data.totalDonations,
tournamentCardsWon:res.data.tournamentCardsWon,
tournamentBattleCount:res.data.tournamentBattleCount,
[clan_tag]:res.data.clan.tag,
[clan_name]:res.data.clan.name,
[bestSeason_id]:res.data.leagueStatistics.bestSeason.id,
[bestSeason_rank]:res.data.leagueStatistics.bestSeason.rank,
[bestSeason_trophies]:res.data.leagueStatistics.bestSeason.trophies,
})
wx.hideToast();
}
})
},
4.贴上小程序的程序码,可以预览下,看怎么样,页面虽然不太美观,但是该有的都有。
|