الخطوة 1: حدد الواجهة "واجهة توقعات الطقس الوطنية" كما هو موضح في هذه المقالة. url url البيانات الإجمالية: http://www.juhe.cn/docs/api/id/39/aid/87
Step2: تحتاج كل واجهة إلى تمرير مفتاح المعلمة ، وهو ما يعادل رمز المستخدم ، وبالتالي فإن الخطوة الأولى التي تحتاجها للتقدم للحصول على مفتاح.
الخطوة 3: يعرف الطلاب الذين درسوا جافا أنه عندما لا نفهم نية وأفكار الفصل أو الطريقة ، يمكننا التحقق من المستند ، وهذا ليس استثناء. لحسن الحظ بالنسبة للطلاب الذين ليسوا جيدين بشكل خاص في اللغة الإنجليزية ، فإن المستندات الموجودة على موقع التجميع كلها في الإصدار الصيني ، والتي يجب أن تكون أسهل بكثير من قراءة المستندات الإنجليزية في كود مصدر Java. هناك ستة أماكن فرعية تحت الواجهة الوطنية للتنبؤ بالطقس. افتح رابط الواجهة الأول وانظر إلى المستند وابحث عن أنك تحتاج إلى تمرير اسم المدينة أو معلمة معرف المدينة. يمكن الحصول على هذه المعلمة من خلال الواجهة الفرعية السادسة (المكالمات بين الواجهات تشبه المكالمات بين الأساليب في Java) ، أي أن الحصول على قوائم المدينة مدعومة. لذلك في المثال ، نسمي هذه الواجهة أولاً. يتضمن استدعاء الواجهة مسألة طلب موارد الشبكة. هنا أقوم بتغليف فئة الأدوات ، بما في ذلك طريقتين: Get and Post.
الخطوة 4: الرمز كما يلي:
DEMO1: فئة أدوات الوصول إلى الشبكة (تغليف طرق GET and POST)
package juheapi ؛ import java.io.bufferedreader ؛ import java.io.bufferedWriter ؛ import java.io.inputstream ؛ import java.io.inputstreamreader ؛ import java.io.outputstreamwriter java.util.map ؛/*** فئة أداة الوصول إلى الشبكة* Author Silk**/Public Class Purenetutil {/*** الحصول على استدعاء مباشرة طريقة Post Method* param عنوان شبكة URL* RETURN DATA DATA*/سلسلة ثابتة عامة GET (url url) {url post (url ، null) ؛ } /*** اضبط طريقة النشر للحصول على موارد الشبكة. إذا كانت المعلمة فارغة ، فسيتم تعيينها فعليًا كأسلوب GET* param عنوان شبكة URL* param param request parameter-value-value pair* reverurn report read data*/ public static string post (String url ، map param) {httpurlconnection conn = null ؛ حاول {url u = url new (url) ؛ conn = (httpurlConnection) U.OpenConnection () ؛ StringBuffer SB = NULL ؛ if (param! = null) {// إذا كانت معلمة الطلب ليست فارغة sb = new StringBuffer () ؛ /*يمكن استخدام اتصال URL للإدخال و/أو الإخراج. قم بتعيين علامة dooutput * على صواب إذا كنت تنوي استخدام اتصال URL للإخراج ، * خطأ إذا لم يكن. الافتراضي هو خطأ.*/// الافتراضي كاذب. تحتاج طريقة المنشور إلى كتابة المعلمات وتعيين Conn.SetDooutput True (True) ؛ // قم بتعيين طريقة post ، الافتراضي Get Conn.SetRequestMethod ("post") ؛ // الحصول على دفق الإخراج OutputStream Out = conn.getOutputStream () ؛ . // تغليف المعلمات في أزواج القيمة الرئيسية لـ (map.entry s: param.entryset ()) {sb.append (s.getKey ()). إلحاق ("="). إلحاق (s.getValue ()). إلحاق ("&") ؛ } // اكتب المعلمات من خلال دفق الإخراج إلى الكاتب. write (sb.deletecharat (sb.toString (). length ()-1) .ToString ()) ؛ الكاتب. } connect () ؛ // قم بعمل اتصال SB = جديد StringBuffer () ؛ // احصل على رمز حالة الاتصال int recode = conn.getResPonsecode () ؛ BufferedReader Reader = NULL ؛ if (recode == 200) {// إرجاع دفق الإدخال الذي يقرأ من هذا الاتصال المفتوح // احصل على دفق الإدخال من inputStream inport in = conn.getInputStream () ؛ // تغليف قارئ دفق الإدخال = جديد BufferedReader (inputStreamReader جديد (في)) ؛ سلسلة str = null ؛ sb = new StringBuffer () ؛ // اقرأ البيانات من دفق الإدخال أثناء ((str = reader.readline ())! = null) {sb.append (str) .append (system.getProperty ("line.separator")) ؛ } // أغلق قارئ دفق الإدخال. if (sb.toString (). length () == 0) {return null ؛ } return sb.toString (). substring (0 ، sb.toString (). length () - system.getProperty ("line.separator"). length ()) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ العودة لاغية. } أخيرًا {if (conn! = null) // أغلق الاتصال conn.disconnect () ؛ } إرجاع فارغ ؛ }} Demo2: اتصل للحصول على مثال واجهة قائمة المدينة
package juheapi ؛ import net.sf.json.jsonarray ؛ استيراد net.sf.json.jsonobject ؛/** * احصل على قائمة المدينة * مثال على الاتصال بـ java في واجهة التنبؤ الوطنية للتوقعات * @سلسلة dtype n واجهة ، إرجاع جميع البيانات*إعادة إرجاع بيانات واجهة*/السلسلة الثابتة العامة excute () {String url = "http://v.juhe.cn/weather/citys؟key=***a7558b2e0bedaa1963f74a6809ce" ؛ purenetutil.get (url) ؛ // استخدم get get method}/** * بعد استدعاء الواجهة لإرجاع البيانات ، وحوض البيانات والحصول على المعرف المقابل بناءً على اسم مدينة الإدخال * param cityname city name * regut if (result! = null) {jsonobject obj = jsonobject.fromObject (result) ؛ النتيجة = obj.getString ("ResultCode") ؛ // احصل على رمز حالة الإرجاع إذا (النتيجة! = null && result.equals ("200")) {// 200 يشير إلى عودة البيانات الناجحة = obj.getString ("result") لـ (Object o: arr) {// transfer arr // parse a json numeric string in the array obj = jsonobject.fromObject (o.toString ()) ؛ /*في هذا الوقت OBJ is {"id": "2" ، "Province": "Beijing" ، "City": "Beijing" ، "District": "Haidian"}*////the the the the the the te regue stive in the key city stity as a clue result = obj.getString ("district") ؛ // منع الاسم غير المكتمل لمدينة المدخلات ، مثل مدخلات مدينة Suzhou مثل Suzhou ، على غرار الاستعلام الغامض إذا (result.equals (cityName) || result.contains (cityName)) {result = obj.getString ("id") ؛ }}}} نتيجة الإرجاع ؛ } public static void main (string [] args) {system.out.println (getIdByCityName ("Hong Kong")) ؛ }} Demo3: اتصل للتحقق من الطقس بناءً على اسم المدينة/الهوية
حزمة Juheapi. استيراد net.sf.json.jsonobject ؛ /** * Query Weather by City Name/ID * Author Silk * */public Class WeatherReportByCity {/** * get */param cityName * @REGRENT */public static string excute (String CityName) {String url = // هنا مثال على بيانات التنسيق json ، so format = 2. مع أخذ اسم المدينة كمثال ، يتم تمرير CityName إلى الصينيين "http://v.juhe.cn/weather/index؟cityname="+cityname+"&key=***a7558b2e0bedaa1963f74a6809ce" ؛ إرجاع purenetutil.get (url) ؛ // الحصول على بيانات الإرجاع من خلال فئة الأدوات}/*** احصل على مثال على سمة في البيانات التي تم إرجاعها ، إليك عينة من الحصول على درجة حرارة اليوم* "درجة الحرارة": "8 ℃ ~ 20 ℃" درجة حرارة اليوم* @Param Args*/public static getTodayTerativeBycity (strep strep). if (result! = null) {jsonobject obj = jsonobject.fromObject (result) ؛ /*الحصول على رمز حالة الإرجاع*/ result = obj.getString ("ResultCode") ؛ /*إذا كان رمز الحالة 200 ، فهذا يعني أن البيانات يتم إرجاعها بنجاح*/ إذا (النتيجة! = null && result.equals ("200")) {result = obj.getString ("result") ؛ // في هذا الوقت ، هناك مفاتيح متعددة في البيانات في النتيجة ، ويمكن اجتياز المفتاح للحصول على السمة obj = jsonobject.fromObject (النتيجة) ؛ // المفتاح المقابل لدرجة حرارة اليوم هو النتيجة اليوم = obj.getString ("اليوم") ؛ OBJ = jSonObject.fromObject (النتيجة) ؛ // المفتاح المقابل لدرجة حرارة اليوم هو نتيجة درجة الحرارة = obj.getString ("درجة الحرارة") ؛ نتيجة العودة }} نتيجة الإرجاع ؛ } public static void main (string [] args) {system.out.println (getTodayTemperatureByCity ("suzhou")) ؛ }} Demo4: مثال على استدعاء واجهة قائمة الطقس وواجهة التمثيل
package juheapi ؛ import net.sf.json.jsonarray ؛ استيراد net.sf.json.jsonobject ؛/*** مثال على استدعاء java لواجهة نوع الطقس وواجهة تحديد الهوية* uthor silk*/public class getWeathersIgnAndtypelist {// stibter alterface ، لأن هناك حاجة إلى مفتاح ثابت إلى المعلمة. "http://v.juhe.cn/weather/uni؟key=***a758b2e0bedaa19673f74a6809ce" ؛ /*** احصل على البيانات من خلال فئة الأدوات* @RETURN*/public Static String Oquire () {return purenetutil.get (url) ؛ // استدعاء فئة الفئة للحصول على بيانات الواجهة}/*** الحصول على* param wid weat ident* @regfic name*/public static string getwatherbywid (wid wid) OBJ = jSonObject.fromObject (النتيجة) ؛ النتيجة = obj.getString ("ResultCode") ؛ /*الحصول على رمز حالة الإرجاع*/ if (النتيجة! = null && result.equals ("200")) {/*الحصول على بيانات الصفيف*/ result = obj.getString ("result") ؛ jsonarray arr = jsonarray.fromObject (النتيجة) ؛ لـ (Object o: arr) {// tranquility array obj = jsonobject.fromObject (o.toString ()) ؛ // إذا قمت بتجاوز البيانات المطلوبة وإرجاع النتيجة مباشرة ، فاحصل على القيمة بناءً على المفتاح (Wid) لتحديد ما إذا كانت مساوية للمعلمة التي تم تمريرها إذا (obj.getString ("wid"). يساوي (wid)) {result = obj.getString ("Weather") ؛ نتيجة العودة }}}} نتيجة الإرجاع ؛ } public static void main (string [] args) {system.out.println (getWeatherbywid ("10")) ؛ }}الخطوة 5: إذا لم يكن رمز الحالة 200 عند الاتصال بالواجهة ، فيرجى الرجوع بعناية إلى تعليمات المستند ، مما يعني العودة إلى الخطوة 3: اقرأ المستند!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.