ขั้นตอนที่ 1: เลือกอินเทอร์เฟซ "อินเทอร์เฟซการพยากรณ์อากาศแห่งชาติ" ดังที่แสดงในบทความนี้ URL ข้อมูลรวม: http://www.juhe.cn/docs/api/id/39/aid/87
ขั้นตอนที่ 2: แต่ละอินเตอร์เฟสต้องผ่านคีย์พารามิเตอร์ซึ่งเทียบเท่ากับโทเค็นของผู้ใช้ดังนั้นขั้นตอนแรกที่คุณต้องใช้สำหรับคีย์
ขั้นตอนที่ 3: นักเรียนที่ศึกษา Java รู้ว่าเมื่อเราไม่เข้าใจความตั้งใจและแนวคิดของชั้นเรียนหรือวิธีการเราสามารถตรวจสอบเอกสารและนี่ก็ไม่มีข้อยกเว้น โชคดีสำหรับนักเรียนที่ไม่ค่อยดีในภาษาอังกฤษเอกสารในเว็บไซต์การรวมอยู่ในเวอร์ชั่นภาษาจีนซึ่งควรจะง่ายกว่าการอ่านเอกสารภาษาอังกฤษในรหัสแหล่ง Java มีอินเตอร์เฟซย่อยหกอันภายใต้อินเทอร์เฟซการพยากรณ์อากาศแห่งชาติ เปิดลิงค์อินเทอร์เฟซแรกและดูเอกสารและค้นหาว่าคุณต้องผ่านชื่อเมืองหรือพารามิเตอร์ ID เมือง พารามิเตอร์นี้สามารถรับได้ผ่านอินเตอร์เฟซย่อยที่หก (การโทรระหว่างอินเทอร์เฟซคล้ายกับการโทรระหว่างวิธีการใน Java) นั่นคือการได้มาซึ่งรายการเมืองได้รับการสนับสนุน ดังนั้นในตัวอย่างเราเรียกอินเทอร์เฟซนี้ก่อน การเรียกอินเทอร์เฟซเกี่ยวข้องกับปัญหาการร้องขอทรัพยากรเครือข่าย ที่นี่ฉันห่อหุ้มคลาสเครื่องมือรวมถึงสองวิธี: รับและโพสต์
ขั้นตอนที่ 4: รหัสมีดังนี้:
DEMO1: คลาสเครื่องมือการเข้าถึงเครือข่าย (ห่อหุ้มวิธีการรับและโพสต์)
แพ็คเกจ juheapi; นำเข้า java.io.bufferedreader; นำเข้า java.io.bufferedWriter; นำเข้า java.io.inputStream; นำเข้า java.io.inputStreamReader; นำเข้า java.io.OutputStreamWriter; นำเข้า Java.net.httpurlconnection; คลาสเครื่องมือ* @author Silk**/คลาสสาธารณะ purenetutil {/*** รับเมธอดโดยตรงเรียกวิธีการโพสต์* @param url ที่อยู่เครือข่าย* @return ส่งคืนข้อมูลเครือข่าย*/สตริงคงที่สาธารณะรับ (url สตริง) {return post (url, null); } /*** ตั้งวิธีการโพสต์เพื่อรับทรัพยากรเครือข่าย หากพารามิเตอร์เป็นโมฆะจริง ๆ แล้วจะถูกตั้งค่าเป็นวิธี GET* @Param URL ที่อยู่เครือข่าย* @Param พารามิเตอร์การร้องขอพารามิเตอร์คู่พารามิเตอร์คู่* @return ส่งคืนข้อมูลอ่าน*/ โพสต์สตริงคงที่สาธารณะ ลอง {url u = url ใหม่ (url); conn = (httpurlconnection) u.openconnection (); StringBuffer SB = NULL; if (param! = null) {// ถ้าพารามิเตอร์คำขอไม่ว่าง sb = new StringBuffer (); /*การเชื่อมต่อ URL สามารถใช้สำหรับอินพุตและ/หรือเอาต์พุต ตั้งค่าการตั้งค่าสถานะ DOOUTPUT * เป็นจริงหากคุณตั้งใจจะใช้การเชื่อมต่อ URL สำหรับเอาต์พุต * FALSE ถ้าไม่ ค่าเริ่มต้นเป็นเท็จ*/// ค่าเริ่มต้นเป็นเท็จ วิธีการโพสต์ต้องเขียนพารามิเตอร์และตั้งค่า true conn.setDooutput (จริง); // ตั้งค่าวิธีการโพสต์, เริ่มต้น get conn.setRequestMethod ("โพสต์"); // รับเอาท์พุทสตรีมเอาท์พุทสตรีมออก = conn.getOutputStream (); // ห่อหุ้มสตรีมเอาต์พุตลงในสตรีมเอาต์พุตขั้นสูง BufferedWriter Writer = New BufferedWriter (New OutputStreamWriter (OUT)); // ห่อหุ้มพารามิเตอร์เป็นคู่คีย์-ค่าสำหรับ (map.entry s: param.entryset ()) {sb.append (s.getKey ()). ผนวก ("="). ผนวก (s.getValue ()). ผนวก ("&"); } // เขียนพารามิเตอร์ผ่านสตรีมเอาต์พุตไปยังนักเขียนเขียน (sb.deletecharat (sb.toString (). ความยาว ()-1) .tostring ()); writer.close (); // จะต้องปิดมิฉะนั้นอาจมีข้อผิดพลาดกับพารามิเตอร์ที่ไม่สมบูรณ์ sb = null; } Connect (); // สร้างการเชื่อมต่อ sb = new StringBuffer (); // รับรหัสสถานะการเชื่อมต่อ int recode = conn.getResponsecode (); bufferedReader reader = null; if (recode == 200) {// ส่งคืนสตรีมอินพุตที่อ่านจากการเชื่อมต่อแบบเปิดนี้ // รับสตรีมอินพุตจากการเชื่อมต่อ inputStream ใน = conn.getInputStream (); // encapsulate reader stream อินพุต = new bufferedReader (ใหม่ inputStreamReader (in)); string str = null; sb = new StringBuffer (); // อ่านข้อมูลจากสตรีมอินพุตในขณะที่ ((str = reader.readline ())! = null) {sb.append (str) .append (system.getProperty ("line.separator")); } // ปิดตัวอ่านสตรีมอินพุต close (); if (sb.toString (). ความยาว () == 0) {return null; } return sb.toString (). substring (0, sb.toString (). length () - system.getProperty ("line.separator"). ความยาว ()); }} catch (exception e) {e.printstacktrace (); คืนค่า null; } ในที่สุด {ถ้า (conn! = null) // ปิดการเชื่อมต่อ conn.disconnect (); } return null; - Demo2: โทรหาตัวอย่างอินเตอร์เฟสรายการเมือง
แพ็คเกจ juheapi; นำเข้า net.sf.json.jsonarray; นำเข้า net.sf.json.jsonObject;/** * รับรายการเมือง * ตัวอย่างของการโทรหา java ในอินเทอร์เฟซการพยากรณ์อากาศแห่งชาติ * Dtype สตริง n กลับรูปแบบข้อมูล: JSON หรือ XML เริ่มต้น อินเทอร์เฟซส่งคืนข้อมูลทั้งหมด*@return ส่งคืนข้อมูลอินเตอร์เฟส*/สตริงคงที่สาธารณะ excute () {string url = "http://v.juhe.cn/weather/citys?key=***a7558b2e0bedaa19673f74a6809ce" การร้องขอเครือข่ายข้อมูลส่งคืน purenetutil.get (url); // ใช้วิธีการรับ}/** * หลังจากเรียกอินเทอร์เฟซเพื่อส่งคืนข้อมูลแยกวิเคราะห์ข้อมูลและรับ ID ที่สอดคล้องกันตามชื่อเมืองอินพุต * @param CityName ชื่อเมืองชื่อเมือง * @@Return if (result! = null) {jsonObject obj = jsonObject.FromObject (ผลลัพธ์); result = obj.getString ("resultcode"); // รับรหัสสถานะการส่งคืนถ้า (ผลลัพธ์! = null && result.equals ("200")) {// 200 หมายถึงผลตอบแทนที่ประสบความสำเร็จของข้อมูลผลลัพธ์ = obj.getString ("ผลลัพธ์"); // รับ สำหรับ (Object O: arr) {// transfer arr // วิเคราะห์สตริงตัวเลข json ในอาร์เรย์ obj = jsonobject.fromobject (o.toString ()); /*ในเวลานี้ obj คือ {"id": "2", "จังหวัด": "ปักกิ่ง", "เมือง": "ปักกิ่ง", "อำเภอ": "Haidian"}*/// บันทึกที่ต้องพบเพื่อการตัดสินตามเมืองสำคัญ // ป้องกันชื่อที่ไม่สมบูรณ์ของเมืองอินพุตเช่น Suzhou City Input เป็น Suzhou, คล้ายกับการสืบค้นฟัซซี่ถ้า (result.equals (CityName) || ผลลัพธ์. }}}} ผลการส่งคืน; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (getidbycityname ("ฮ่องกง")); - Demo3: โทรตรวจสอบสภาพอากาศตามชื่อเมือง/id
แพ็คเกจ Juheapi; นำเข้า net.sf.json.jsonobject; /** * สอบถามสภาพอากาศตามชื่อเมือง/id * @author Silk * */คลาสสาธารณะ WeatherReportBycity {/** * รับ */param CityName * @return */String String excute (String CityName) {String url = // นี่คือตัวอย่างข้อมูลรูปแบบ JSON การใช้ชื่อเมืองเป็นตัวอย่างชื่อ CityName ถูกส่งผ่านไปยังภาษาจีน "http://v.juhe.cn/weather/index?cityname="+cityname+"&key=***A7558B2E0BEDAA19673F74A6809CE"; ส่งคืน purenetutil.get (url); // รับข้อมูลส่งคืนผ่านคลาสเครื่องมือ}/*** รับตัวอย่างของแอตทริบิวต์ในข้อมูลที่ส่งคืนนี่คือตัวอย่างของการรับอุณหภูมิของวันนี้* "อุณหภูมิ": "8 ℃ ~ 20 ℃" อุณหภูมิของวันนี้ if (result! = null) {jsonObject obj = jsonObject.FromObject (ผลลัพธ์); /*รับรหัสสถานะส่งคืน*/ result = obj.getString ("ResultCode"); /*หากรหัสสถานะคือ 200 หมายความว่าข้อมูลจะถูกส่งคืนสำเร็จ*/ ถ้า (ผลลัพธ์! = null && result.equals ("200")) {result = obj.getString ("ผลลัพธ์"); // ในเวลานี้มีหลายปุ่มในข้อมูลในผลลัพธ์และคีย์สามารถข้ามไปได้เพื่อให้ได้แอตทริบิวต์ obj = jsonobject.fromobject (ผลลัพธ์); // คีย์ที่สอดคล้องกับอุณหภูมิของวันนี้คือผลลัพธ์วันนี้ = obj.getString ("วันนี้"); obj = jsonobject.fromobject (ผลลัพธ์); // คีย์ที่สอดคล้องกันของอุณหภูมิของวันนี้คือผลลัพธ์อุณหภูมิ = obj.getString ("อุณหภูมิ"); ผลการกลับมา; }} ผลการส่งคืน; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (getTodayTemperatureBycity ("suzhou")); - Demo4: ตัวอย่างการโทรประเภทสภาพอากาศและอินเทอร์เฟซรายการตัวแทน
แพ็คเกจ juheapi; นำเข้า net.sf.json.jsonarray; นำเข้า net.sf.json.jsonObject;/*** ตัวอย่างของการโทรหา java สำหรับประเภทสภาพอากาศและรายการข้อมูลประจำตัวอินเทอร์เฟซ* @author Silk*/คลาสสาธารณะ getweathersignandtypelist {// ที่อยู่อินเทอร์เฟซ "http://v.juhe.cn/weather/uni?Key=***A7558B2E0BEDAA19673F74A6809CE"; /*** รับข้อมูลผ่านคลาสเครื่องมือ* @return*/ไอเสียสตริงสแตติกสาธารณะ () {return purenetutil.get (url); // การเรียกคลาสเครื่องมือเพื่อรับข้อมูลอินเตอร์เฟส}/*** รับ* @param wid สภาพอากาศที่สอดคล้องกัน* @@return ชื่อสภาพอากาศ*/สตริงคงที่ obj = jsonobject.fromobject (ผลลัพธ์); ผลลัพธ์ = obj.getString ("resultcode"); /*รับรหัสสถานะส่งคืน*/ if (result! = null && result.equals ("200")) {/*รับข้อมูลอาร์เรย์*/ result = obj.getString ("ผลลัพธ์"); jsonArray arr = jsonarray.fromobject (ผลลัพธ์); สำหรับ (Object O: arr) {// array ความเงียบสงบ obj = jsonobject.fromobject (O.ToString ()); // หากคุณสำรวจข้อมูลที่ต้องการและส่งคืนผลลัพธ์โดยตรงให้รับค่าตามคีย์ (wid) เพื่อตรวจสอบว่ามันเท่ากับพารามิเตอร์ที่ผ่านหรือไม่ถ้า (obj.getString ("wid"). เท่ากับ (wid)) {result = obj.getString ("Weather"); ผลการกลับมา; }}}} ผลการส่งคืน; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (getweatherbywid ("10")); -ขั้นตอนที่ 5: หากรหัสสถานะไม่ใช่ 200 เมื่อเรียกอินเทอร์เฟซโปรดอ้างอิงคำแนะนำเอกสารอย่างระมัดระวังซึ่งหมายถึงการกลับไปที่ขั้นตอนที่ 3: อ่านเอกสาร!
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น