éçº
å¿ èŠæ§ããªããããWG APIãšã®æŠãã«ã¯ã¢ããªã±ãŒã·ã§ã³ããããŸããããåæã«ããã®APIãããŒã¿ãžã®ã·ã³ãã«ã§ãªãŒãã³ãªã¢ã¯ã»ã¹ã®ããã®ããŸããŸãªãã¢ã®äŸãšããŠäœ¿çšããããšæããŸãã æ®å¿µãªããã.NETã§WG APIã®äœæ¥ã©ã€ãã©ãªãèŠã€ãããªãã£ããããCïŒã§ã¯ã©ã€ã¢ã³ããçæãããŠãŒãã£ãªãã£ãäœæããŸãããããã¯ã WG APIãµã€ãããããã¥ã¡ã³ããèªã¿åããæ¢è£œã®ãªã¯ãšã¹ãããã³ã¬ã¹ãã³ã¹ã¢ãã«ã«åŠçããŸãã
æ®å¿µãªãããWG APIã®ããã¥ã¡ã³ãã¯å®å šã§ã¯ãªããããæç¹ã§ãJSONã䜿çšããŠæ¢ã«åä¿¡ããåçããã®ã¿è¿ãããåçãç解ããããšãã§ããŸãã
ãã®åŸã thunderspb habrozhitelã¯ããŒã¿ã¹ããŒããååŸããããã®ã¯ããã«ç°¡åãªæ¹æ³ãææ¡ããŸããããã®ãããèšäºã®å ¬éã延æããŸããïŒæéã®å€§å¹ ãªäžè¶³ã«ããã»ãŒ2ãæïŒã æ®å¿µãªããããã®ããŒã¿ã¹ããŒã ã«ããŸã£ããåãæ¬ ç¹ããããŸããè€åããŒã¿åã®å¿ç圢åŒãç解ããæ¹æ³ã¯ãããŸããã å°æ¥ããã®ããŒã¿ã¹ããŒã ã§åäœããããã«ãŠãŒãã£ãªãã£ãããçŽãäºå®ã§ãããçŸæç¹ã§ã¯WG APIã§ã®åäœã¯åªå äºé ã§ã¯ãªããããçŸåšå®è£ ãããŠãããã®ãã¬ã€ã¢ãŠãããããšã«ããŸããã
å®è£ ïŒ
WGãåºå£ã§èŠæ±ãäžãããã®ã®æ§é ãå®å šã«ææžåããŠããªããšããäºå®ã®ãããèŠæ±ãšå¿çã®åœ¢åŒãå®éã«ã¯å°ãäžäŸ¿ã«ããå¿ èŠããããŸããã åºåã§ã¯ã1ã€ã®çããšåããããç°¡åã«ååŸã§ããŸãããŸããé åãŸãã¯èŸæžãååŸããããšãã§ããŸãã äžèšã®ããã«ããªã¯ãšã¹ããéä¿¡ããJSONã®åœ¢åŒã§å¿çãåä¿¡ããã ãã§å¯èœãªããšãèŠã€ããããšãã§ããŸããããã§ãã©ã€ãããŒã¿ã§ããŒã¿ãã©ã®ããã«è¿ããããã確èªããŸãïŒããã¥ã¡ã³ãã«åã¡ãœããã®Explorer APIãžã®ãªã³ã¯ããããšäŸ¿å©ã§ãããªã¯ãšã¹ããäœæããŠããã©ãŠã¶ã§çŽæ¥åçã確èªããã®ã¯éåžžã«ç°¡åã§ãïŒã
æçµçã«ãéåžžã«ã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ãã§ããŸããããã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãWG APIãéããŠããããŒãžãéããã解æãããŸãã ãã®åŸãCïŒã¯ã©ã€ã¢ã³ãã³ãŒããçæãããå¥ã®ãŠã£ã³ããŠã«è¡šç€ºãããŸãã

ãããããœãŒã¹ã³ãŒããããŠã³ããŒãã§ããŸãã ãããžã§ã¯ããããŠã³ããŒãããŠå®è¡ããå¿ èŠããªãå ŽåããŸãã¯å®è¡ããæ©äŒããªãå Žåã¯ãããã«çæãããã¯ã©ã€ã¢ã³ãã³ãŒãã®äŸãããŠã³ããŒãããããšãã§ããŸã ã
䜿çšäŸïŒ
以äžã®äŸã®ãœãŒã¹ã³ãŒãã¯ã ããããå ¥æã§ããŸã ã
PCLãšäºææ§ã®ããã³ãŒããå ¥æããã®ã§ããã®ã³ãŒããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšWebãµãŒããŒã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã«äœ¿çšã§ããŸãã
ããšãã°ã15åãè²»ããããã¶ã€ã³ãªãã®ãã¹ãXamarin Formsã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããæåã®ãã©ãŒã ã§ã¯ããã¯ããŒã ã«ããæ€çŽ¢ãã2çªç®ã®ãã©ãŒã ã§ã¯èŠã€ãã£ãããã¯ããŒã ã®ãã¡éžæãããããã¯ããŒã ã«é¢ããæ å ±ãã¹ã±ããããŸããã
äœæãããããžã§ã¯ãã«csãã¡ã€ã«ãè¿œå ãããŠãŒãã£ãªãã£ã§çæãããã³ãŒããã³ããŒããŸããã
次ã®ã¹ãããã¯ãJson.netã©ã€ãã©ãªãè¿œå ããããšã§ãïŒnugetããNewtonsoft.Jsonã©ã€ãã©ãªãŸãã¯Install-Package Newtonsoft.Jsonã³ãã³ããæ€çŽ¢ããŸãïŒã
æ€çŽ¢ã³ãŒãã¯éåžžã«ç°¡åã§ãã
var client = new WGClient.Client(); var accounts = await client.SendRequestArray<ResponseWgnAccountList>(new RequestWotAccountList() { ApplicationId = "demo", Search = SearchNickname }); GamerAccounts = accounts;
åæã«ãçæããã説æã®ãããã§ãã³ãŒããå ¥åãããšãã«ã¹ã¿ãžãªã§çŽæ¥ããã³ãããåãåãããšãã§ããŸãã

ApplicationIdïŒâ demoâã¯APIã®ãã¹ãã«ã®ã¿äœ¿çšã§ããããšã«æ³šæããŠãã ããã ãªãªãŒã¹ããã«ã¯ã ã¢ã«ãŠã³ãã« ApplicationIdãäœæããå¿ èŠããããŸã
èŠã€ãã£ãããã¯ããŒã ã®ãªã¹ãã衚瀺ããããã«æ®ããŸãïŒ

æ®å¿µãªããšã«ãAmiev SheriyevïŒç§ã®å åŒïŒã®ãããã§ãäŸã®ããŒã¹ãåŒãè£ãããã«æäŸãããã²ãŒã ã®ããã¯ããŒã ã«æè¬ããŠããŸãã
èŠã€ãã£ããªã¹ãããã¿ããããŠã2çªç®ã®ãã©ãŒã ãéããéžæããAccountIdãæž¡ããŸãã
var item = e.SelectedItem as ResponseWgnAccountList; Navigation.PushAsync(new DetailsPageView(item.AccountId));
2çªç®ã®ããŒãžã§ã¯ããã詳现ãªæ å ±ãååŸããããã®å¥ã®ã¡ãœããã®ãªã¯ãšã¹ããäœæãããŸãã
var client=new Client(); var response=await client.SendRequestDictionary<ResponseWotAccountInfo>(new RequestWotAccountInfo() { ApplicationId = "demo", AccountId = accountId });

ãããã£ãŠãçæãããã¯ã©ã€ã¢ã³ãã®å©ããåããŠããªã¯ãšã¹ããšWG APIãžã®å¿çãçæããã«ãŒãã³ã®èªååã«ãããæéãå€§å¹ ã«ç¯çŽããã¢ããªã±ãŒã·ã§ã³èªäœã«æéãåŽåã泚æãéäžããããšãã§ããŸãã
çæïŒ
æåãã¡ã€ã«ã«ããã®å¿ èŠæ§
ãããããããæãåºæ¬çãªæ¬ ç¹ã§ã-å šäœãšããŠã®åçå šäœã«é¢ããŠã¯ããµãã¿ã€ãã«ã€ããŠã¯ãããŒã¿ãè¿ãããæ¹æ³ã«é¢ããæ å ±ããããŸããïŒåçŽãªåçãé åããŸãã¯èŸæžïŒã ãããã£ãŠãå€ãã®å Žæã§ç·šéãè¡ãå¿ èŠããããŸãã
ããšãã°ããã¯ããã¯ã¡ãœããïŒ çŸç§äºå ž/ä¹ãç© ïŒãåãäžããŸãã
å¿çéãæžããããã«ã1ã€ã®ã¬ãã«ãš1ã€ã®åœã®ææ³ã䜿çšããŠå¿çããã£ã«ã¿ãªã³ã°ããŸãã 次ã®ã³ãŒããåŒã³åºããšããšã©ãŒãã¹ããŒãããŸãã
var client = new WGClient.Client(); var response = await client.SendRequestDictionary<ResponseWotEncyclopediaVehicles>(new RequestWotEncyclopediaVehicles() { ApplicationId = "demo", Tier = "8", Nation = "ussr" });
äŸå€ãæããïŒ
æªåŠçã®äŸå€ïŒNewtonsoft.Json.JsonSerializationExceptionïŒçŸåšã®JSONé åïŒããšãã°[1,2,3]ïŒãJSONãªããžã§ã¯ãïŒããšãã°{"name"ïŒ "value »}ïŒæ£ããéã·ãªã¢ã«åããã
ãã®ãšã©ãŒãä¿®æ£ããã«ã¯ãJSONãJSONãªããžã§ã¯ãïŒäŸïŒ{"name"ïŒ "value"}ïŒã«å€æŽããããéã·ãªã¢ã«åãããåãé åãŸãã¯Listã®ãããªã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ïŒICollectionãIListïŒãå®è£ ããåã«å€æŽããŸãJSONé åãããã·ãªã¢ã©ã€ãºãããŸãã JsonArrayAttributeãã¿ã€ãã«è¿œå ããŠãJSONé åãããã·ãªã¢ã©ã€ãºã匷å¶ããããšãã§ããŸãã
ãããã£ãŠãCrewãµãã¿ã€ãããã·ãªã¢ã©ã€ãºããããšã¯ã§ããªãã£ãããã API Explorerã§ãªã¯ãšã¹ãããã«ããããšãCrewãé åãšããŠè¿ãããããšãããããŸãã

åæã«ãæ å ±ãååšããªãã¯ã«ãŒãµãã¿ã€ããšã¯å¯Ÿç §çã«ããã£ãŒã«ãã¿ã€ããæŽæ°ã®ãªã¹ãããæå®ãããŠãããšããäºå®ã«ããããšã³ãžã³ãã£ãŒã«ããæ£ããèªèãããŸããã
Crewãã£ãŒã«ããé åã«ããŠããã£ãŒã«ãã眮ãæããããšã§ãšã©ãŒãä¿®æ£ã§ããŸãã
///<summary> /// ///</summary> [JsonProperty("crew")] public WotEncyclopediaVehiclesCrew Crew { get; set; }
é åããšïŒ
public WotEncyclopediaVehiclesCrew[] Crew { get; set; }
default_profile.ammoã«ã€ããŠãåæ§ã®ãšã©ãŒãããããçºçããŸãããé åãäœæããŠä¿®æ£ããå¿ èŠããããŸãã
æ®å¿µãªãããã»ãšãã©ãã¹ãŠã®æ¹æ³ã§ãã®ãããªå€æŽãè¡ãå¿ èŠããããŸãããããã§ãããããã®å€æŽããã£ãŠããäœæ¥éã¯å€§å¹ ã«æ¹åãããŸãã
HTMLäŸåé¢ä¿
WG APIã¯JSONèšè¿°æšæºã䜿çšããªããããHTMLèšè¿°ã®è§£æã«æºè¶³ããå¿ èŠããããŸãã ãŸããHTMLã¯ä»»æã«å€æŽã§ããåãã¿ã€ãã®èšè¿°ã¯ç°ãªãå Žåãããããã·ã¢èªã§ãèŠã€ããããšãã§ããŸãã 䜿çšãããã¿ã€ãã®æ°ããååãææ¥è¡šç€ºãããªããšããä¿èšŒã¯ãããŸããã
次ã®ããŒãžã§ã³ã§ã¯ãJSONã®HTMLèšè¿°ã®ä»£ããã«è§£æããŸããããã®åé¡ã®åœ±é¿ã¯ãããã«æžå°ããŸãã
ãã©ãŠã¶
çŸåšã®ãœãªã¥ãŒã·ã§ã³ã¯CefSharpã«åºã¥ããŠããŸããããã¯ããã§ã«ãœãªã¥ãŒã·ã§ã³ãWin32ãã©ãããã©ãŒã ã§ã®ã¿æ©èœããããšãæå³ããŸãã CefSharpã©ã€ãã©ãªã䜿çšããŠæžãæããŠãã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ãååŸã§ããŸãã ç¹°ãè¿ããŸãããJSON解æã«åãæ¿ãããšãCefSharpã®äŸåé¢ä¿ããªããªããWindowsãMacãããã³Webã§åäœãããœãªã¥ãŒã·ã§ã³ãäœæãããŸãã
æªãã€ã³ã¿ãŒããã
ããŒãµãŒã¯ãã€ã³ã¿ãŒãããããã®åŸã®ãã¹ãŠã®çµæãšãšãã«æ¶æ» ããå¯èœæ§ãããããšãèæ ®ããŠããŸããã
æé©ã§ãªãã¯ã©ã€ã¢ã³ãAPI
çµå±ãç§ã¯ããªãåé·ã§ããŸã䟿å©ã§ã¯ãªãéãããŒãžã§ã³ã«æ±ºããŸããã
SendRequest<TResponse>(TRequest request)
ãœãªã¥ãŒã·ã§ã³ãç°¡åã«ããæ¹æ³ã¯ãããããããŸãã ãã ããWGãç¬èªã®APIã®èª¬æãå®äºããã®ãé¢åã§ã¯ãªãå Žåã¯ãAPIã®æãç°¡åãªããŒãžã§ã³ãååŸã§ããŸãïŒã€ãŸããå¿çãšããŠã®èŠæ±ããæ£ç¢ºã«äœãæåŸ ã§ãããããèŸæžãé åããŸãã¯å¿çã®ã«ãŒãããã³åããŒãã®åäžãªããžã§ã¯ããäœããã®åœ¢ã§èŠå¶ããããïŒã
NugetãŸãã¯Json.NETã©ã€ãã©ãªãæåã§è¿œå ããå¿ èŠæ§
æ®å¿µãªãããçŸæç¹ã§ã¯ãã¢ã»ã³ããªãŸãã¯ãã²ããããã±ãŒãžã®åœ¢ã§ãœãªã¥ãŒã·ã§ã³ãçæããæ¹æ³ã¯ãããŸãããããã¯ãäžèšã®åé¡ïŒèŠæ±ã«å¯Ÿããå¿çã®èšè¿°ã®æ¬ åŠïŒã®ããã«å®å šã«æ©èœããã³ãŒããããã«ååŸããæ¹æ³ããªãããã§ãã
Nugetããã±ãŒãžã䜿çšãããœãªã¥ãŒã·ã§ã³ã§ã¯ããœãŒã¹ã³ãŒããã³ããŒããŠJson.NETãæåã§æ¥ç¶ããå¿ èŠããªããªãå¯èœæ§ããããŸãããäžèšã®ããã«ãæå®ã®å Žæã«ãã¡ã€ã«ããå¿ èŠããããŸãã
ãã¹ãã«ãã¬ããž
APIã®æ°ããããŒãžã§ã³ã¯æã«1ã2åãªãªãŒã¹ãããŸãã ãããã£ãŠãåçå šäœãåçæãããšããã§ã«è¡ã£ããã¡ã€ã«ã§ã®ãã¹ãŠã®ç·šéå 容ãèªåçã«å€±ãããŸãã
æ°ããããŒãžã§ã³ã§ãã¹ãŠããã¡ã€ã«ã§æ£ããå€æŽãããããšã確èªããããã«ãååŸãããœãªã¥ãŒã·ã§ã³ããã¹ãã§ã«ããŒããŠããã¡ã€ã«ã§äœããå¿ããã«å¿ããªãããã«ããããšãã§ããŸãã æŠããŠããã¹ãã¯èªåçã«çæãããŸãã çè«çã«ã¯ãããã«ãããæ°ããããŒãžã§ã³ããã¹ãŠãå®å šã«ç Žå£ããããã§ã¯ãªãããšãéšåçã«æ€èšŒãããŸãã
ã³ãŒãå質
åè¿°ã®ããã«ãã³ãŒãã¯ãœãªã¥ãŒã·ã§ã³ã®ãããã¿ã€ããšããŠäœæããããã®ã§ãããå®éã®ããŒãžã§ã³ã«ã¹ããŒããŠæžãæããã®ã¯æ®å¿µãªããšã§ã¯ãããŸããã ãœãªã¥ãŒã·ã§ã³å šäœïŒåèš15åã§èšè¿°ãããäŸãå«ãïŒã«ãåèš2æ©ãè²»ããããŸããã
ã¯ã©ã€ã¢ã³ããçæãããããžã§ã¯ããéžæãã
çŸåšããã¹ãŠã®ãããžã§ã¯ãã«å¯ŸããŠ4äžè¡ä»¥äžãäžåºŠã«çæãããŠããŸãã ã¯ã©ã€ã¢ã³ããçæããå¿ èŠããããããžã§ã¯ããšãã®ãããžã§ã¯ãã®ã¡ãœããã®éžæãè¿œå ã§ããŸãã
çŸæç¹ã§ã¯ããã¹ãŠã®ãããžã§ã¯ãã¯åå空éã§åºåãããŠããããããããžã§ã¯ããåé€ããã ãã§æçµçãªã¢ã»ã³ããªãµã€ãºãçž®å°ã§ããŸãã

äœåãªãã£ãŒã«ãã«ã€ããŠãåãããšãèšããŸãã
ç¡éã«æ¹åã§ããŸãããããã¯èŠçŽã§ããŸãã
ãŸãšã
Wargamingãéçºè ã«éãããAPIãéãã ãã§ãªãããã£ãŒã«ãã®å€ã詳现ã«èª¬æããããšããŠãããšããäºå®ã¯éåžžã«ç§°è³ã«å€ããŸãã 説æãšåçèªäœã®æ§é ã«ã¯é倧ãªæ¬ ç¹ããããŸãïŒã€ãŸããè¿ãããå 容ãåäžã®åçãé åããŸãã¯è€éãªåã®èŸæžãç解ããããšã¯äžå¯èœã§ãïŒããããã¯ãã®ãããªãµãŒãã¹ã«æé©ãªAPIããã¥ã¡ã³ãã®1ã€ã§ãã
ãã®èšäºã§èŠãããã«ãWGã¯å°ãªããšãããã€ãã®äž»èŠãªããã°ã©ãã³ã°èšèªçšã®ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãç°¡åã«çæã§ããæ¢æã®ã©ã€ãã©ãªãæ¥ç¶ããã ãã§éçºè ã®èšå€§ãªæéãšåŽåãç¯çŽã§ããŸãã WGããåæ§ã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ããããšãæåŸ ããŸãããã