Étape 1: Sélectionnez l'interface "Interface nationale de prévision météorologique" comme indiqué dans cet article. URL des données agrégées: http://www.juhe.cn/docs/api/id/39/aid/87
Étape2: Chaque interface doit passer une touche de paramètre, ce qui équivaut au jeton de l'utilisateur, de sorte que la première étape dont vous devez demander une clé.
Étape 3: Les étudiants qui ont étudié Java savent que lorsque nous ne comprenons pas l'intention et les idées d'une classe ou d'une méthode, nous pouvons vérifier le document, et cela ne fait pas exception. Heureusement pour les étudiants qui ne sont pas particulièrement bons en anglais, les documents sur le site Web d'agrégation sont tous en version chinoise, ce qui devrait être beaucoup plus facile que de lire les documents anglais dans le code source Java. Il y a six sous-interfaces sous l'interface nationale de prévision météorologique. Ouvrez le premier lien d'interface et regardez le document et trouvez que vous devez passer un nom de ville ou un paramètre ID de la ville. Ce paramètre peut être obtenu via la sixième sous-interface (les appels entre les interfaces sont similaires aux appels entre les méthodes de Java), c'est-à-dire que l'acquisition de listes de villes est prise en charge. Donc, dans l'exemple, nous appelons d'abord cette interface. L'appel de l'interface implique le problème de la demande de ressources réseau. Ici, je résume une classe d'outils, y compris deux méthodes: obtenir et publier.
Étape 4: Le code est le suivant:
Demo1: Classe d'outils d'accès au réseau (Encapsule Get and Post Methods)
Package JUHEAPI; IMPORT Java.io.BufferedReader; Importer Java.io.BufferedWriter; Importer java.io.inputStream; Importer java.io.inputStreamReader; Importer java.io.outputstreamwriter; import java.net.httpurlconnection; Classe d'outils * @author Silk * * / classe publique Purenetutil {/ ** * Get Method appelle directement la méthode du post * @param URL Adresse réseau * @return return Network Data * / public static String get (String URL) {return post (url, null); } / ** * Définissez la méthode Post pour obtenir des ressources réseau. Si le paramètre est NULL, il est en fait défini comme la méthode GET * @Param URL Network Adresse * @param Paramet Paramètre de la demande de la paire de valeurs * @return return Data * / public static String post (chaîne URL, map param) {httpurlconnection Conn = null; essayez {url u = new url (url); Conn = (httpurlConnection) u.openconnection (); StringBuffer sb = null; if (param! = null) {// Si le paramètre de demande n'est pas vide sb = new StringBuffer (); / * Une connexion URL peut être utilisée pour l'entrée et / ou la sortie. Définissez l'indicateur DOOutput * sur true si vous avez l'intention d'utiliser la connexion URL pour la sortie, * Faux sinon. La valeur par défaut est fausse. * / // La valeur par défaut est fausse. La méthode post doit écrire des paramètres et définir True Conn.SetDoOutput (true); // Définit la méthode Post, par défaut Get Conn.SetRequestMethod ("Post"); // Obtenez le flux de sortie OutputStream OUT = Conn.getOutputStream (); // encapsuler le flux de sortie dans un flux de sortie avancé BufferedWriter Writer = new BufferedWriter (new OutputStreamWriter (Out)); // encapsuler les paramètres en paires de valeurs clés pour (map.entry s: param.entryset ()) {sb.append (s.getKey ()). APPEND ("="). APPEND (s.getValue ()). APPEND ("&"); } // Écrivez les paramètres via le flux de sortie vers writer.write (sb.deleteCharat (sb.toString (). Length () - 1) .ToString ()); writer.close (); // il faut être fermé, sinon il peut y avoir une erreur avec des paramètres incomplets sb = null; } connect (); // créer une connexion sb = new StringBuffer (); // Obtenez le code d'état de connexion int recode = Conn.getResponSECOD (); BufferedReader Reader = NULL; if (recode == 200) {// Renvoie un flux d'entrée qui se lit à partir de cette connexion ouverte // Obtenez le flux d'entrée de la connexion InputStream dans = Conn.getInputStream (); // encapsuler le lecteur de flux d'entrée = new BufferedReader (new inputStreamReader (in)); String str = null; sb = new StringBuffer (); // Lire les données du flux d'entrée while ((str = reader.readline ())! = Null) {sb.append (str) .append (System.getProperty ("line.separator")); } // Fermez le flux d'entrée Reader.close (); if (sb.toString (). Length () == 0) {return null; } return sb.toString (). substring (0, sb.toString (). Length () - System.getProperty ("line.separator"). Length ()); }} catch (exception e) {e.printStackTrace (); retourner null; } Enfin {if (congn! = null) // Fermez la connexion conn.disconnect (); } return null; }} Demo2: Appelez pour obtenir l'exemple de l'interface de la liste de la ville
Package JUHEAPI; Import net.sf.json.jsonArray; import net.sf.json.jsonObject; / ** * Obtenez la liste de la ville * Exemple d'appel Java dans l'interface nationale de prévision météorologique * String dtype N que vous appliquez pour * @Autor Silk * * / Public Class GetCity GetCity GetCity GetCity {/ ** * Calle de la ville * * Interface, renvoyez toutes les données * @return Retour Interface Data * / public static String excute () {String url = "http://v.juhe.cn/weather/citys?key=****A7558B2E0BEDAA19673F74A6809CE" Purenetutil.get (url); // utilisez la méthode de get} / ** * après avoir appelé l'interface pour renvoyer les données, analyser les données et obtenir l'ID correspondant en fonction du nom de la ville d'entrée * @param cityname Cityname Nom * @return Renvoie l'ID correspondant * / public static string getIDBYCityName (String CityName) {String Result = Excugue (); // Retourne l'interface Résultat et Get the Jon Format if (result! = null) {jsonObject obj = jsonObject.FromObject (result); result = obj.getString ("resultCode"); // Obtenez le code d'état de retour if (result! = null && result.equals ("200")) {// 200 indique un retour réussi de Data Result = obj.getString ("result"); // Obtenez le tableau de chaîne de format JSON de la liste de la ville jsonarray arr = jSonArray.fromObject (résultat); pour (objet o: arr) {// transfert arr // analyse une chaîne numérique json dans le tableau obj = jsonObject.fromObject (o.toString ()); / * À l'heure actuelle, obj est {"id": "2", "province": "Beijing", "ville": "Beijing", "District": "Haidian"} * / // le dossier qui doit être trouvé pour le jugement basé sur la ville clé comme résultat d'indice = obj.getString ("District"); // Empêche le nom incomplet de la ville d'entrée, comme la contribution de Suzhou City en tant que Suzhou, similaire à Fuzzy Query if (result.equals (cityname) || result.contains (CityName)) {result = obj.getString ("id"); // get id return result; }}}} Retour Résultat; } public static void main (string [] args) {System.out.println (getIdByCityName ("hong kong")); }} Demo3: Appelez pour vérifier la météo en fonction du nom / ID de la ville
Package Juheapi; importer net.sf.json.jsonObject; / ** * Query the Weather by City Name / Id * @Author Silk * * / public class WeatherReportBycity {/ ** * get * / Param CityName * @return * / public static String excute (String CityName) {String url = // Voici un exemple de données de format JSON, donc format = 2. Prenant le nom de la ville à titre d'exemple, Cityname est transmis dans le chinois "http://v.juhe.cn/weather/index?cityName="+CityName+"&key=***A7558B2E0BEDAA19673F74A6809CE"; return purenetutil.get (URL); // Obtenez des données de retour via la classe d'outils} / ** * Obtenez un exemple d'attribut dans les données retournées, voici un échantillon d'obtention de la température d'aujourd'hui * "Température": "8 ℃ ~ 20 ℃" TEMPERTURE D'AUJOURD'HUI * @PARAM Args * @return * / public static static getTodayTempertreyCity (String City) {String result = Excute (ville); if (result! = null) {jsonObject obj = jsonObject.FromObject (result); / * Obtenez le code d'état de retour * / result = obj.getString ("resultCode"); / * Si le code d'état est de 200, cela signifie que les données sont renvoyées avec succès * / if (result! = Null && result.equals ("200")) {result = obj.getString ("result"); // Pour le moment, il y a plusieurs clés dans les données dans le résultat, et la clé peut être traversée pour obtenir l'attribut obj = jsonObject.FromObject (résultat); // La clé correspondant à la température d'aujourd'hui est aujourd'hui résultat = obj.getString ("aujourd'hui"); obj = jsonObject.FromObject (result); // La clé correspondante de la température d'aujourd'hui est le résultat de la température = obj.getString ("température"); Résultat de retour; }} Retour Résultat; } public static void main (String [] args) {System.out.println (getTodayTemperatureBycity ("suzhou")); }} Demo4: Exemple d'appel d'interface de type météo et de représentation
Package Juheapi; import net.sf.json.jsonArray; import net.sf.json.jsonObject; / ** * Exemple d'appel Java pour le type de temps et l'interface de la liste d'identification * @author Silk * / classe publique GetweatHetSignandTypelist {// l'adresse d'interface constante, car seule une clé fixe doit être adoptée en tant que paramètre, il est réglé sur une chaîne de touche finale constante pour la strime finale = "http://v.juhe.cn/weather/uni?key=****A7558B2E0BEDAA19673F74A6809CE"; / ** * Obtenez des données via la classe d'outils * @return * / public static String SHUISH () {return purenetutil.get (url); // Appelez la classe d'outils pour obtenir des données d'interface} / ** * get * @param wid weather correspondant à id * @return Nom de la météo * / public static static getweatherbywid (string wid) {String result = excuse (); // get interface data obj = jsonObject.FromObject (result); result = obj.getString ("resultCode"); / * Obtenez le code d'état de retour * / if (result! = Null && result.equals ("200")) {/ * obtenir des données de tableau * / result = obj.getString ("result"); JSONArray arr = JSONArray.FromObject (résultat); pour (objet o: arr) {// Array Array obj = jsonObject.FromObject (O.ToString ()); // Si vous traversez les données requises et renvoyez directement le résultat, obtenez la valeur en fonction de la clé (wid) pour déterminer si elle est égale au paramètre adopté if (obj.getString ("wid"). Equals (wid)) {result = obj.getString ("Weather"); Résultat de retour; }}}} Retour Résultat; } public static void main (String [] args) {System.out.println (getWeatherBywid ("10")); }}Étape 5: Si le code d'état n'est pas 200 lors de l'appel de l'interface, veuillez vous référer attentivement aux instructions du document, ce qui signifie revenir à l'étape 3: Lisez le document!
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.