SCHRITT1: Wählen Sie die Schnittstelle "National Weather Prognose Interface" aus, wie in diesem Artikel gezeigt. Aggregate Daten URL: http://www.juhe.cn/docs/api/id/39/aid/87
STEP2: Jede Schnittstelle muss einen Parameterschlüssel übergeben, der dem Token des Benutzers entspricht. Der erste Schritt, den Sie für einen Schlüssel beantragen müssen.
SCHRITT 3: Schüler, die Java studiert haben, wissen, dass wir das Dokument überprüfen können, wenn wir die Absicht und Ideen einer Klasse oder Methode nicht verstehen, und dies ist keine Ausnahme. Zum Glück für Studenten, die in Englisch nicht besonders gut sind, sind die Dokumente auf der Aggregation -Website alle in der chinesischen Version, was viel einfacher sein sollte, als die englischen Dokumente im Java -Quellcode zu lesen. Unter der Nationalen Wettervorhersage-Schnittstelle gibt es sechs Unterinterfassen. Öffnen Sie den ersten Schnittstellen -Link und schauen Sie sich das Dokument an und stellen Sie fest, dass Sie einen Parameter der Stadtnamen oder einen Stadt -ID -Parameter übergeben müssen. Dieser Parameter kann über die sechste Untergrenze erhalten werden (die Aufrufe zwischen Schnittstellen ähneln den Aufrufen zwischen den Methoden in Java), dh der Erwerb von Stadtlisten wird unterstützt. Im Beispiel nennen wir diese Schnittstelle zuerst. Das Aufrufen der Schnittstelle beinhaltet das Problem der Anforderung von Netzwerkressourcen. Hier verkapsle ich eine Werkzeugkurs, einschließlich zwei Methoden: Get and Post.
Schritt 4: Der Code ist wie folgt:
Demo1: Netzwerkzugriffs -Toolklasse (Kapital- und Post -Methoden capsulieren)
Paket juheapi; import Java.io.buffenedReader; Import Java.io.BuffenWriter; Import Java.io.inputStream; Import Java.io.inputStreamReader; Import Java.io.outputStreamwriter; Werkzeugklasse* @Author Silk**/public class purenetutil {/*** Methode Ruf direkt die Post -Methode* @param URL -Netzwerkadresse* @return return -Netzwerkdaten*/public static String get (String url) {return post (url, null); } /*** Legen Sie die Post -Methode fest, um Netzwerkressourcen zu erhalten. Wenn der Parameter null ist, wird er tatsächlich als die GET-Methode erhalten* @param URL-Netzwerkadresse* @param Paramanforderung Parameter-Schlüsselwertpaar* @return return lesedaten*/ public static String Post (String-URL, MAP-Param) {httpurlConnection conn = null; Versuchen Sie {url u = new URL (URL); conn = (httpurlConnection) u.OpenConnection (); StringBuffer sb = null; if (param! /*Eine URL -Verbindung kann für Eingabe und/oder Ausgabe verwendet werden. Setzen Sie das Dooutput * -Flag auf true, wenn Sie die URL -Verbindung für die Ausgabe verwenden möchten, * Falsch, wenn nicht. Die Standardeinstellung ist falsch.*/// Standard ist falsch. Die Post -Methode muss Parameter schreiben und echte conn.setDooutput (true) festlegen. // Setzen Sie die Post -Methode, standardmäßig Get Conn.SetRequestMethod ("post"); // den Ausgabestream Ausgangsstream usw. abrufen = conn.getOutputStream (); // den Ausgabestream in den erweiterten Ausgangsstrom BufferedWriter Writer = New BufferedWriter (neuer Ausgangsstreamwriter (Out)) zusammenfassen; // Die Parameter in Schlüsselwertpaare für (MAP.Entry s: param.EntrySet ()) {sb.append (S.Getkey ()) einschließen. Append ("="). Append (S.GetValue ()). Append ("&"); } // Schreiben Sie die Parameter über den Ausgabestream an writer.write (sb.deletecharat (sb.toString (). Länge ()-1) .ToString ()); writer.close (); // Es muss geschlossen werden, andernfalls kann es einen Fehler mit unvollständigen Parametern sb = null geben; } connect (); // eine Verbindung herstellen sb = new StringBuffer (); // den Verbindungsstatus -Code int recode = conn.getResponScode () abrufen; BufferedReader reader = null; if (recode == 200) {// gibt einen Eingabestream zurück, der aus dieser offenen Verbindung liest // den Eingabestream aus dem Verbindungseingangsstream in = conn.getInputStream () abrufen; // capsuliert den Eingabestream reader = new bufferedReader (neuer InputStreamReader (in)); String str = null; sb = new StringBuffer (); // Daten aus dem Eingabestream lesen ((Str = reader.readline ())! } // Schließen Sie den Eingabestream reader.close (); if (sb.toString (). Länge () == 0) {return null; } return sb.toString (). substring (0, sb.toString (). Länge () - system.getProperty ("line.separator"). Länge ()); }} catch (Ausnahme e) {e.printstacktrace (); null zurückkehren; } endlich {if (conn! = null) // Schließen Sie die Verbindung conn.disconnect (); } return null; }} Demo2: Rufen Sie an, um das Beispiel der Stadtlisten -Schnittstelle zu erhalten
Paket juheapi; import net.sf.json.jsonarray; import net.sf.json.jsonObject;/** * Die Stadtliste erhalten * Beispiel für die Aufruf von Java in der Nationalen Wettervorhersage -Schnittstelle * DTYPE STRING N RETURN DATA -Format: JSON oder XML, Default JSON * Key -Sting yo. @ @ @ @ @ @ @ @ @ @ @@Author Siffer Schnittstelle, alle Daten zurückgeben*@return return Interface -Daten*/public static String excute () {String url = "http://v.juhe.cn/weather/citals?key=***a7558b2e0Bedaaa19673f74a6809ce -Methoden. Polenetutil.get (url); // GET -Methode verwenden}/** * Nach dem Aufrufen der Schnittstelle, um die Daten zurückzugeben, die Daten zu analysieren und die entsprechende ID auf der Grundlage des Eingabebuchnamens zu erhalten. if (result! = null) {jsonObject obj = jsonObject.fromObject (Ergebnis); result = obj.getString ("resultCode"); // den Rückgabebatuscode abrufen if (Ergebnis! = NULL && result.equals ("200") {// 200 zeigt eine erfolgreiche Rückgabe von Datenergebnissen an = obj.getString ("result"); // das JSON -Format -String -Array der Stadtliste JsonArray array.fromobjekt (result). für (Objekt O: arr) {// Übertragen Sie arr // eine json numerische Zeichenfolge in das Array obj = jsonObject.fromObject (O.ToString ()); /*Zu diesem Zeitpunkt ist obj {"id": "2", "provinz": "peking", "Stadt": "Peking", "Distrikt": "Haidian"}*// Das Protokoll, das für das Urteil auf der Grundlage der Schlüsselstadt als Hinweis Ergebnis = Obj.getString ("District"); // Verhindern Sie den unvollständigen Namen der Eingangsstädte wie Suzhou City Input als Suzhou, ähnlich wie Fuzzy -Abfrage (Ergebnis.Equals (CityName) || Ergebnis. }}}} Rückgabeergebnis; } public static void main (String [] args) {System.out.println (getIdByCityName ("Hongkong")); }} Demo3: Rufen Sie an, um das Wetter basierend auf dem Namen/der ID der Stadt zu überprüfen
Paket Juheapi; import net.sf.json.jsonObject; /** * Abfragen Sie das Wetter nach Stadtname/id * @author sieben * */öffentliche Klasse WeatherReportByCity {/** * GET */Param CityName * @Return */public static String excute (String CityName) {String url = // hier ist ein JSON -Format -Daten Beispiel, SO format = 2. CityName nimmt den Namen der Stadt als Beispiel und wird in die chinesischen "http://v.juhe.cn/weather/index?cityname="+cityname+"&key=***a7558b2e0Bedaa19673f74a6809ce" übergeben. return purenetutil.get (URL); // Returndaten über die Werkzeugklasse abrufen}/*** Erhalten Sie ein Beispiel für ein Attribut in den zurückgegebenen Daten. Hier ist eine Stichprobe, um die heutige Temperatur zu erhalten. if (result! = null) {jsonObject obj = jsonObject.fromObject (Ergebnis); /*Rückgabestatuscode erhalten*/ result = obj.getString ("resultcode"); /*Wenn der Statuscode 200 ist, bedeutet dies, dass die Daten erfolgreich zurückgegeben werden*/ if (Ergebnis! = Null && result.equals ("200") {result = obj.getString ("Ergebnis"); // Zu diesem Zeitpunkt gibt es mehrere Schlüssel in den Daten im Ergebnis, und der Schlüssel kann durchquert werden, um das Attribut obj = JsonObject.fromObject (Ergebnis) zu erhalten. // Der Schlüssel, der der heutigen Temperatur entspricht, ist heute Ergebnis = obj.getString ("Today"); obj = jsonObject.fromObject (Ergebnis); // Der entsprechende Schlüssel der heutigen Temperatur ist Temperaturergebnis = obj.getString ("Temperatur"); Rückgabeergebnis; }} Rückgabeergebnis; } public static void main (String [] args) {System.out.println (GetTodayTemperatureByCity ("Suzhou"); }} Demo4: Beispiel für die Anrufe von Wettertyp und Darstellungsliste an der Schnittstelle
Paket juheapi; net.sf.json.jsonArray; import net.sf.json.jsonObject;/*** Beispiel für die Aufruf von Java für Wettertyp und Identifikationsliste* @Author Silk*/öffentliche Klasse GetWeatherandTypelist {// Schnittstelle, da nur ein fester Schlüssel zu einem festen Schlüsselabschluss übergeben werden muss. "http://v.juhe.cn/weather/uni?key=***a7558b2e0Bedaaa19673f74a6809ce"; /*** Daten über die Werkzeugklasse erhalten* @return*/public static String auspuff () {return purenetutil.get (url); // Aufrufen der Werkzeugklasse, um Schnittstellendaten zu erhalten. obj = jsonObject.fromObject (Ergebnis); result = obj.getString ("resultcode"); /*Rückgabestatuscode erhalten*/ if (result! = Null && result.equals ("200") {/*Array -Daten abrufen*/ result = obj.getString ("result"); JsonArray arr = jsonArray.fromObject (Ergebnis); für (Objekt O: arr) {// Ruhearray obj = jsonObject.fromObject (O.ToString ()); // Wenn Sie die erforderlichen Daten durchqueren und das Ergebnis direkt zurückgeben, erhalten Sie den Wert basierend auf dem Schlüssel (WID), um festzustellen, ob er dem übergebenen Parameter gleich ist, wenn (obj.getString ("Wid"). Equals (Wid)) {result = obj.getString ("Wetter"); Rückgabeergebnis; }}}} Rückgabeergebnis; } public static void main (String [] args) {System.out.println (getWeatherByWid ("10"); }}Schritt 5: Wenn der Statuscode bei Aufrufen der Schnittstelle nicht 200 ist, wenden Sie sich sorgfältig auf die Dokumentanweisungen, dh zurück zu Schritt 3: Lesen Sie das Dokument!
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.