Une histoire sur l'utilisation de l'API League Of Legends avec JAVA

J'ai étudié dur donc je vais le laisser. Puisque je viens d'étudier, veuillez signaler toute erreur ou tout point étrange. (Surtout strictement différent)

Ce que j'ai appris cette fois

--Lire l'API de lol

environnement

Charger l'API depuis lol

Il existe un site de développement publié par Riot Games. Pour le moment, vous avez besoin d'un compte lol (la version japonaise est également acceptable), donc si vous n'en avez pas, obtenez-en un. https://developer.riotgames.com/ (site en anglais) Vous recevrez la CLÉ DE L'API DE DÉVELOPPEMENT ici. Il semble qu'il ne puisse être utilisé que pendant 24 heures.

Si vous souhaitez l'utiliser avec un service comme OP.GG (http://jp.op.gg/), vous ne pouvez pas utiliser cette clé API, alors peut-être que vous pouvez le faire en appuyant sur le bouton rouge "Register Project" en haut à droite. Il semble, mais cette fois, j'en ai utilisé un limité.

Après avoir obtenu (copie) la CLÉ API, cliquez sur «MISE EN ROUTE» dans «DOCUMENTATION API» de l'onglet ci-dessus pour afficher ce qui semble être un tutoriel. Cette fois, j'ai essayé l'API INSCRIPTION À L'API RIOT GAMES. Selon l'explication, il semble que vous puissiez recevoir l'API en ajoutant la CLE API obtenue plus tôt à la fin de l'URL ci-dessous et en y accédant avec un navigateur.

https://na1.api.riotgames.com/lol/summoner/v3/summoners/by-name/RiotSchmick?api_key=

Si les données de Riot Schmick sont affichées, cela réussit. Cette fois, j'ai eu les informations sur les joueurs de Riot Schmick. Si vous souhaitez obtenir vos propres informations, remplacez la partie "RiotSchmick" de l'URL par votre nom d'invocateur, et si le serveur n'apparaît pas dans NA, remplacez la partie "na1" par votre zone serveur ("jp1" au Japon). Je vais.

Si vous souhaitez charger d'autres API, cliquez sur "DCUMENTATION API" sur le site du développeur et sélectionnez les données que vous souhaitez obtenir.

Par exemple, si vous souhaitez charger les données des champions, sélectionnez "CHAMPION-V3" dans l'onglet de gauche, cliquez sur "/ lol / platform / v3 / champions", sélectionnez une option (facultative) et cliquez sur "EXECUTER REQUEST". L'URL et le résultat de l'acquisition seront affichés. Si vous souhaitez le vérifier vous-même, vous pouvez copier l'URL et l'ouvrir depuis votre navigateur. À ce stade, si vous l'ouvrez normalement, il sera rejeté avec une erreur d'authentification, alors ajoutez "& api_key = <clé API acquise>" à la fin.

Charger l'API avec JAVA

S'il n'y a pas de problème, lisez-le avec JAVA. Cependant, je ne sais pas comment gérer les chaînes JAVA, donc je vais simplement coller le code.

LolApiTest.java


import java.io.*;
import java.net.URL;

public class LolApiTest {
	public static void main(String[] args){
		String region = "na1";
		String apiKey = //Mettez la clé API obtenue ici
		String apiUrl = "https://"+region+".api.riotgames.com/lol/summoner/v3/summoners/by-name/RiotSchmick?api_key="+apiKey;

		try {

			//Je ne sais pas ici
			URL url = new URL(apiUrl);

			String newLine = "";		//Obtenez une nouvelle ligne ici
			String currentText = "";	//Ajoutez toutes les lignes acquises ici

			//Je ne connais pas ces deux
			InputStreamReader isReader = new InputStreamReader(url.openStream());
			BufferedReader bReader = new BufferedReader(isReader);

			//Ajouter jusqu'à ce que la ligne acquise devienne nulle
			while((newLine = bReader.readLine()) != null){
				currentText = currentText + newLine;
			}

			//Sortie à la fin
			System.out.println(currentText);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Si la même sortie que lors du chargement par le navigateur est sortie, elle réussit.

Utiliser les données JSON dans JAVA

On dit que le format avec de nombreuses sorties {} et: est appelé données JSON. (Veuillez me dire les détails) C'est pénible de lire ceci par vous-même et de le déposer dans une liste ou un tableau, donc j'utiliserai la puissance de la bibliothèque. Cette fois, j'ai emprunté JSON en Java à partir de l'URL ci-dessous. Je pense que ça va parce que la version est la dernière.

https://mvnrepository.com/artifact/org.json/json

Pour ajouter la bibliothèque téléchargée, dans Eclipse, cliquez avec le bouton droit sur le projet, sélectionnez "Ajouter une archive externe" dans "Chemin de construction" et sélectionnez la bibliothèque téléchargée. Plus précisément, je l'ai ajouté et utilisé comme indiqué ci-dessous.

LolApiTest.java


			/*Premier omis*/
			import org.json.JSONObject;

			/*Omission*/

			//Créez un objet JSON.
			JSONObject summonerObject = new JSONObject(currentText);

			//Sortir tout
			for(String key: summonerObject.keySet()){
				System.out.println(key+": "+summonerObject.get(key));
			}

			/*Le dos est également omis*/

Parmi les données JSON lues, celle sur le côté gauche de: comme "accountId" et "profileIconId": semble s'appeler Key. La clé de l'objet créé peut être obtenue avec la méthode keySet. Un tableau de chaînes sera renvoyé. Parmi les données JSON lues, celle à droite de: peut être obtenue avec la méthode get. Je ne sais pas quel type il retournera, mais si vous souhaitez le spécifier, vous pouvez utiliser getString, etc. Entrez la clé comme argument. Dans le cas des éléments de liste imbriqués contenant une liste, il semble que vous puissiez l'obtenir en faisant object.get (key1) .get (key2) …….

À la fin

Quand j'ai pensé, "Faisons ça!", Il n'y avait aucun article qui a identifié le contenu (tous étaient faibles), alors je l'ai résumé. (Un article de synthèse tendance?) J'espère que cela aidera les personnes suivantes à créer des outils et des applications Web incroyables (vocabulaire).

J'ai toujours la possibilité d'aller au-delà de mes passe-temps (peut-être?), Donc les phrases sont difficiles à lire et le contenu n'est probablement pas strict. Comme je l'ai écrit au début, veuillez signaler tout point étrange. (Vraiment)

À l'origine, lorsque je sollicitais des problèmes de programmation sur Twitter, mes juniors dans le cercle m'ont dit de lire l'API pour le tableau de performance des coûts des éléments lol. Puisqu'il est terminé, je peux publier le code si j'en ai envie. (Surtout parce qu'il importe que cela fonctionne sans problème même si le patch lol est mis à jour)

Merci d'avoir lu jusqu'au bout.

Les références

Veuillez noter que certaines informations ne sont pas à jour.

――Je ne peux plus t'entendre! Qu'est-ce qu'une API? ~ Apprenez les bases des bases ~ (https://www.sejuku.net/blog/7087)

La date d'accès pour les deux est le 27 mars 2018.

Recommended Posts

Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une histoire sur le JDK à l'ère de Java 11
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream
L'histoire de la création d'un proxy inverse avec ProxyServlet
Une histoire sur le développement de ROS appelé rosjava avec java
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
[Jackson] Une histoire sur la conversion de la valeur de retour du type BigDecimal avec un sérialiseur personnalisé.
Histoire de créer une application de gestion de tâches avec Swing, Java
Une histoire remplie des bases de Spring Boot (résolu)
À propos du comportement lors de la création d'un mappage de fichiers avec Java
L'histoire de la création d'une version Java du serveur Minecraft avec GCP (et également de la création d'une liste blanche)
L'histoire du refactoring avec un assistant personnel pour la première fois dans une application Rails
[Note] Une histoire sur la modification des outils de compilation Java avec VS Code
Une histoire sur la difficulté à aligner un cadre de test avec Java 6
Une histoire qui a eu du mal avec l'introduction de Web Apple Pay
À propos du traitement de BigDecimal (avec réflexion)
L'histoire de l'écriture de Java dans Emacs
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
L'histoire de la comparaison de chaînes de bas niveau en Java
L'histoire de la fabrication d'un Othello ordinaire à Java
Une histoire sur la prise en charge de Java 11 pour les services Web
A propos de l'ordre de description des propriétés système Java
À propos de l'idée des classes anonymes en Java
L'histoire de l'apprentissage de Java dans la première programmation
L'histoire du réglage de l'application Android avec libGDX
Une histoire sur la création d'un Builder qui hérite du Builder
Histoire d'essayer de faire fonctionner le fichier JAVA
Une histoire confirmant l'implémentation de la bibliothèque Java SendGrid lorsque la livraison du courrier échoue
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
[PHP] Histoire de la sortie de PDF avec TCPDF + FPDI
CI l'architecture des applications Java / Kotlin avec ArchUnit
Utiliser des expressions Java lambda en dehors de l'API Stream
Surveillez l'état interne des programmes Java avec Kubernetes
Vérifiez le comportement de Java Intrinsic Locks avec bpftrace
Ecrire un test en mettant en œuvre l'histoire de M. Nabeats dans le monde avec du rubis
Une histoire d'essayer de s'entendre avec Mockito
[Java] Lors de l'écriture du source ... Mémorandum ①
Une histoire sur la réduction de la consommation de mémoire à 1/100 avec find_in_batches
Une histoire sur l'introduction d'Evolutions dans le cadre de jeu
Rêver de créer facilement une API Web pour la base de données d'un système Java existant
Implémentons une fonction pour limiter le nombre d'accès à l'API avec SpringBoot + Redis
Une vue d'ensemble du framework Java natif de Kubernetes Quarkus
[Java] Découpez une partie de la chaîne de caractères avec Matcher et des expressions régulières
J'ai essayé de créer un outil de comparaison des prix des produits Amazon dans le monde entier avec Java, l'API Amazon Product Advertising, l'API Currency (29/01/2017)
Une histoire de rendre catkin_make de rosjava compatible hors ligne
Remplacez seulement une partie de l'hôte URL par java
L'histoire du transfert d'un conteneur Docker vers le registre de packages GitHub et Docker Hub avec des actions GitHub
[Premier message] Une histoire sur un deuxième nouveau diplômé de l'Université d'éducation physique devenant un programmeur inexpérimenté
Une explication rapide des cinq types de statique Java
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Vérifier le fonctionnement de deux rôles avec une application de chat
Une note sur la fonction de départ de Ruby on Rails
Implémentation d'un analyseur de syntaxe mathématique par méthode d'analyse syntaxique descendante récursive (Java)
Créer un SlackBot avec AWS lambda et API Gateway en Java
Une histoire à laquelle j'étais accro avec toString () d'Interface qui était proxy avec JdkDynamicAopProxy
[Java] Un article sur IntelliJ IDEA enseignant la méthode putIfAbsent de Map
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot