Diablo3英雄榜-API分析

Diablo3英雄榜-API分析

 

概述

暗黑3API 是暴雪提供的用来给游戏爱好者提供英雄和资料查询的工具。玩家可以在线下在社区应用中扩展游戏体验。

 

这篇文章是写在UI篇之后的,但是由于UI篇还没有完成。实际上我的流程是UI->逻辑->数据。在UI的过程中需要很多数据,设计到美观问题,尤其是装备这块。我打算先把装备这块的数据先分析出来。

 

角色档案

访问账户信息级别的信息需要使用角色档案API。这个档案通过一个HTTP GET request返回一个dataset。访问的方式如下:

battletag-name ::= <regional battletag allowed characters>

battletag-code ::= <integer>

url ::= <host> "/api/d3/profile/" <battletag-name> "-" <battletag-code> "/"

 

这里的battletag-name就是游戏里面的账号名称,battletag-code就是游戏里面跟随的#数字。比如:

http://tw.battle.net/api/d3/profile/kakyban-3879/

这里会得到账号下的游戏ID列表之类的数据。在这个例子里host为tw.battle.net。内容大概如下所示的Json内容:

HTTP/1.1200 OK

<http headers>

 

{"heroes": [{"name": "Yharr", "id": 1, ...}, ...], ...}

 

具体的可以直接访问我给出的例子。这都是真实的数据。

 

英雄档案

英雄档案就是所玩的角色的ID,比如说练了个法师,那么就是那个法师的档案。英雄档案API一次同伙一个HTTP GET请求获得一个英雄的资源文件。

 

battletag-name ::= <regional battletag allowed characters>

battletag-code ::= <integer>

hero-id ::= <integer>

url ::= <host> "/api/d3/profile/" <battletag-name> "-" <battletag-code> "/hero/" <hero-id>

这里的hero-id是上一级的json数据里的id。那么访问一个英雄的api大概如下:

http://tw.battle.net/api/d3/profile/kakyban-3879/hero/26135206

得到的json数据大概如下:

HTTP/1.1200 OK

<http headers>

 

{ "id" : 1, "name" : "Yharr", "class" : "barbarian", "gender" : 0, "level" : 54, "hardcore" : false, ... }

也就是说先要调用角色档案API得到账号下角色的id号,然后在通过id得到每个id的角色详细信息。角色的详细信息里面就包含了id,名称,职业,性别,等级,巅峰等级,装备列表,技能列表,追随者列表等。

装备详细信息

装备详细信息是通过调用items属性下的tooltipParams

url ::= <host> "/api/d3/data/item/" <item-data>

 

http://tw.battle.net/api/d3/data/item/CogBCIL4qLcOEgcIBBVToDKJHXKOHSEdOLLA1R2bBgDLHeZqMcAdZiMGUB2BgcbEMIsCOPYCQABQElgEYPYCaisKDAgAEM7b0OiFgIDAFhIbCMqDpcEMEgcIBBWFJ5SxMIsCOABAAVgEkAEAgAFGpQHmajHArQHmFdsNtQF_-U5duAGvr47ICcABIRjZ_ursDlACWACgAdn-6uwOoAGZgPvhDqAB5qDfkwagAbrehKsP

 

比如这样子,就是这个角色身上穿的头盔的API。得到大概下面的内容:

HTTP/1.1200 OK

<http headers>

 

{ "name": "Exsanguinating Chopsword of Assault", "icon": "mightyweapon1h_202", "displayColor": "blue", "requiredLevel": 60, "itemLevel": 61, "bonusAffixes": 0, ... }

 

追随者信息

追随者的格式如下:

follower-type ::= "enchantress" | "templar" | "scoundrel"

url ::= <host> "/api/d3/data/follower/" < follower-type>

 

得到的内容大概如下:

HTTP/1.1200 OK

<http headers>

 

{ "slug": "scoundrel", "name": "Scoundrel", "portrait": "scoundrel", "skills": { "active": [ { "slug": "crippling-shot", "name": "Crippling Shot", ...}, ...], ... }, ... }

 

最后补充:

如何得到物品的图片列,比如在物品信息API或者英雄API的items属性里有一个icons的属性。比如那个角色的头盔的icon为unique_helm_set_05_x1_demonhunter_male,那么他的API就是

http://media.blizzard.com/d3/icons/items/small/unique_helm_set_05_x1_demonhunter_male.png

http://media.blizzard.com/d3/icons/items/large/unique_helm_set_05_x1_demonhunter_male.png

 

如何得到装备的数据

在得到Json的字符串以后,我们可以通过Gson转换成为Mapping,如下面的代码

Map<String, Object> mProfile ;

……

Gson gson = new Gson();

mProfile = gson.fromJson(response, new TypeToken<Map<String,Object>>(){}.getType());

 

在这里一定一定要注意,不要意图直接把字符串转换成对象。因为暴雪的api并不是非常的严谨。在Rest里面,职业的id是class也就是说保留字冲突。还用到了一些其他的符号,比如说"-"。

如上的图片,请大家不要做,完全没有啥意义。说起来满脸都是泪啊。

posted @ 2015-04-06 21:55  苍林  阅读(1460)  评论(0编辑  收藏  举报