Diablo3英雄榜-API分析

Diablo3英雄榜-API分析 json

 

概述 api

暗黑3API 是暴雪提供的用來給遊戲愛好者提供英雄和資料查詢的工具。玩家能夠在線下在社區應用中擴展遊戲體驗。app

 

這篇文章是寫在UI篇以後的,可是因爲UI篇尚未完成。實際上個人流程是UI->邏輯->數據。在UI的過程當中須要不少數據,設計到美觀問題,尤爲是裝備這塊。我打算先把裝備這塊的數據先分析出來。工具

 

角色檔案 ui

訪問帳戶信息級別的信息須要使用角色檔案API。這個檔案經過一個HTTP GET request返回一個dataset。訪問的方式以下:url

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

battletag-code ::= <integer>.net

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

 

這裏的battletag-name就是遊戲裏面的帳號名稱,battletag-code就是遊戲裏面跟隨的#數字。好比:3d

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也就是說保留字衝突。還用到了一些其餘的符號,好比說"-"。

如上的圖片,請你們不要作,徹底沒有啥意義。提及來滿臉都是淚啊。

相關文章
相關標籤/搜索