Rumah php教程 php手册 全国天气预报接口调用示例

全国天气预报接口调用示例

Oct 12, 2016 am 09:50 AM

基于JAVA的全国天气预报接口调用示例
step1:选择本文所示例的接口"全国天气预报接口" url:https://www.juhe.cn/docs/api/id/39/aid/87
step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key
step3:看文档!!!学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.
全国天气预报接口下面有六个子接口,打开第一个接口链接,看文档发现需要传入一个城市名或者城市ID参数,这个参数我们可以通过第六个子接口获取(接口之间参数的调用类似于java中方法之间的调用),即支持城市列表获取.所以示例中我们先调用这个接口.调用接口涉及到请求网络资源的问题,这里我封装了一个工具类,包含GET和POST两种方法
step4:上代码

Demo1:网络访问工具类(封装get和post方法)package juheAPI;<br>   <br> import java.io.BufferedReader;<br> import java.io.BufferedWriter;<br> import java.io.InputStream;<br> import java.io.InputStreamReader;<br> import java.io.OutputStream;<br> import java.io.OutputStreamWriter;<br> import java.net.HttpURLConnection;<br> import java.net.URL;<br> import java.util.Map;<br> /**<br>  * 网络访问工具类<br>  * @author silk<br>  *<br>  */<br> public class PureNetUtil {<br>     /**<br>      * get方法直接调用post方法<br>      * @param url 网络地址<br>      * @return 返回网络数据<br>      */<br>     public static String get(String url){<br>         return post(url,null);<br>     }<br>     /**<br>      * 设定post方法获取网络资源,如果参数为null,实际上设定为get方法<br>      * @param url 网络地址<br>      * @param param 请求参数键值对<br>      * @return 返回读取数据<br>      */<br>    public static  String post(String  url,Map   param){<br>         HttpURLConnection conn=null;<br>         try {<br>             URL u=new URL(url);<br>             conn=(HttpURLConnection) u.openConnection();<br>             StringBuffer sb=null;<br>             if(param!=null){//如果请求参数不为空<br>                 sb=new StringBuffer();<br>                 /*A URL connection can be used for input and/or output.  Set the DoOutput<br>                  * flag to true if you intend to use the URL connection for output,<br>                  * false if not.  The default is false.*/<br>                 //默认为false,post方法需要写入参数,设定true<br>                 conn.setDoOutput(true);<br>                 //设定post方法,默认get<br>                 conn.setRequestMethod("POST");<br>                 //获得输出流<br>                 OutputStream out=conn.getOutputStream();<br>                 //对输出流封装成高级输出流<br>                 BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));<br>                 //将参数封装成键值对的形式<br>                 for(Map.Entry s:param.entrySet()){<br>                     sb.append(s.getKey()).append("=").append(s.getValue()).append("&");<br>                 }<br>                 //将参数通过输出流写入<br>                 writer.write(sb.deleteCharAt(sb.toString().length()-1).toString());<br>                 writer.close();//一定要关闭,不然可能出现参数不全的错误<br>                 sb=null;<br>             }<br>             conn.connect();//建立连接<br>             sb=new StringBuffer();<br>             //获取连接状态码<br>             int recode=conn.getResponseCode();<br>             BufferedReader reader=null;<br>             if(recode==200){<br>                 //Returns an input stream that reads from this open connection<br>                 //从连接中获取输入流<br>                 InputStream in=conn.getInputStream();<br>                 //对输入流进行封装<br>                 reader=new BufferedReader(new InputStreamReader(in));<br>                 String str=null;<br>                 sb=new StringBuffer();<br>                 //从输入流中读取数据<br>                 while((str=reader.readLine())!=null){<br>                     sb.append(str).append(System.getProperty("line.separator"));<br>                 }<br>                 //关闭输入流<br>                 reader.close();<br>                 if (sb.toString().length() == 0) {<br>                     return null;<br>                 }<br>                 return sb.toString().substring(0,<br>                         sb.toString().length() - System.getProperty("line.separator").length());<br>             }<br>         } catch (Exception e) {<br>             e.printStackTrace();<br>             return null;<br>         }finally{<br>             if(conn!=null)//关闭连接<br>                 conn.disconnect();<br>         }<br>         return null;<br>     }<br>   <br> }Demo2:调用获取城市列表接口示例package juheAPI;<br>  <br> import net.sf.json.JSONArray;<br> import net.sf.json.JSONObject;<br>  <br>  <br> /**<br>  * 获取城市列表<br>  * 全国天气预报接口调用JAVA示例<br>  *     dtype     string    N    返回数据格式:json或xml,默认json    <br>  *     key        string     Y    你申请的key    <br>  * @author silk<br>  *<br>  */<br> public class GetCityList {<br>     /**<br>      * 调用获取城市列表接口,返回所有数据<br>      * @return 返回接口数据<br>      */<br>     public static String excute(){<br>         String url="http://v.juhe.cn/weather/citys?key=***a7558b2e0bedaa19673f74a6809ce";//接口URL<br>         //PureNetUtil是一个封装了get和post方法获取网络请求数据的工具类<br>         return PureNetUtil.get(url);//使用get方法<br>     }<br>     /**<br>      * 调用接口返回数据后,解析数据,根据输入城市名得到对应ID<br>      * @param cityName 城市名称<br>      * @return 返回对应ID<br>      */<br>     public static String getIDBycityName(String cityName) {<br>         String result=excute();//返回接口结果,得到json格式数据<br>         if(result!=null){<br>             JSONObject obj=JSONObject.fromObject(result);<br>             result=obj.getString("resultcode");//得到返回状态码<br>             if(result!=null&&result.equals("200")){//200表示成功返回数据<br>                 result=obj.getString("result");//得到城市列表的json格式字符串数组<br>                 JSONArray arr=JSONArray.fromObject(result);<br>                 for(Object o:arr){//对arr进行遍历<br>                     //将数组中的一个json个数字符串进行解析<br>                     obj=JSONObject.fromObject(o.toString());<br>                     /*此时obj如 {"id":"2","province":"北京","city":"北京","district":"海淀"}*/<br>                     //以city这个key为线索判断所需要寻找的这条记录<br>                     result=obj.getString("district");<br>                     //防止输入城市名不全,如苏州市输入为苏州,类似与模糊查询<br>                     if(result.equals(cityName)||result.contains(cityName)){<br>                         result=obj.getString("id");//得到ID<br>                         return result;<br>                     }<br>                 }<br>             }<br>         }<br>         return result;<br>     }<br>     public static void main(String[] args) {<br>         System.out.println(getIDBycityName("香港"));<br>     }<br> }Demo3:调用根据城市名/id查询天气package juheAPI;<br>  <br> import net.sf.json.JSONObject;<br>  <br>  <br> /**<br>  * 根据城市名/id查询天气<br>  * @author silk<br>  *<br>  */<br> public class WeatherReportByCity {<br>     /**<br>      * 根据城市名获取<br>      * @param cityName<br>      * @return<br>      */<br>     public static String excute(String cityName){<br>         String url=//此处以返回json格式数据示例,所以format=2,以根据城市名称为例,cityName传入中文<br>                 "http://v.juhe.cn/weather/index?cityname="+cityName+"&key=***a7558b2e0bedaa19673f74a6809ce";<br>         return PureNetUtil.get(url);//通过工具类获取返回数据<br>     }<br>     /**<br>      * 获取返回数据中的一个属性示例,此处以获取今日温度为例<br>      * "temperature": "8℃~20℃"     今日温度<br>      * @param args<br>      * @return <br>      */<br>     public static String GetTodayTemperatureByCity(String city) {<br>         String result=excute(city);<br>         if(result!=null){<br>             JSONObject obj=JSONObject.fromObject(result);<br>             /*获取返回状态码*/<br>             result=obj.getString("resultcode");<br>             /*如果状态码是200说明返回数据成功*/<br>             if(result!=null&&result.equals("200")){<br>                 result=obj.getString("result");<br>                 //此时result中数据有多个key,可以对其key进行遍历,得到对个属性<br>                 obj=JSONObject.fromObject(result);<br>                 //今日温度对应的key是today<br>                 result=obj.getString("today");<br>                 obj=JSONObject.fromObject(result);<br>                 //今日温度对应当key是temperature<br>                 result=obj.getString("temperature");<br>                 return result;<br>             }<br>         }<br>         return result;<br>     }<br>     public static void main(String[] args) {<br>         System.out.println(GetTodayTemperatureByCity("苏州"));<br>     }<br> }Demo4:调用天气种类及表示列表接口示例package juheAPI;<br>  <br> import net.sf.json.JSONArray;<br> import net.sf.json.JSONObject;<br>  <br>  <br> /**<br>  * 天气种类及标识列表接口调用JAVA示例<br>  * @author silk<br>  */<br> public class GetWeatherSignAndTypeList {<br>     //接口地址,因为只需要传入一个固定的key为参数,所以设为常量<br>     private static final String URL= "http://v.juhe.cn/weather/uni?key=***a7558b2e0bedaa19673f74a6809ce";<br>     /**<br>      * 通过工具类获取数据<br>      * @return<br>      */<br>     public static String excute(){<br>         return PureNetUtil.get(URL);//调用工具类获取接口数据<br>     }<br>     /**<br>      * 利用遍历数组的方式获取<br>      * @param wid天气对应id<br>      * @return 天气名称<br>      */<br>     public static String getWeatherByWid(String wid) {<br>         String result=excute();//获取接口数据<br>         if(result!=null){<br>             JSONObject obj=JSONObject.fromObject(result);<br>             result=obj.getString("resultcode");<br>             /*获取返回状态码*/<br>             if(result!=null&&result.equals("200")){<br>                 /*获取数组数据*/<br>                 result=obj.getString("result");<br>                 JSONArray arr=JSONArray.fromObject(result);<br>                 for(Object o:arr){//遍历数组<br>                     obj=JSONObject.fromObject(o.toString());<br>                     //如果遍历到需要的数据后直接返回结果,根据key(wid)得到value判断是否等于传入参数<br>                     if(obj.getString("wid").equals(wid)){<br>                         result=obj.getString("weather");<br>                         return result;<br>                     }<br>                 }<br>             }<br>         }<br>         return result;<br>     }<br>     public static void main(String[] args) {<br>         System.out.println(getWeatherByWid("10"));<br>     }<br> }step5:调用接口时候如果状态码不是200,仔细参考文档说明,也就是返回step3:看文档!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Jan 04, 2024 am 10:50 AM

Ketahui tentang pengaturcaraan Python dengan contoh kod pengenalan Python ialah bahasa pengaturcaraan yang mudah dipelajari tetapi berkuasa. Bagi pemula, adalah sangat penting untuk memahami contoh kod pengenalan pengaturcaraan Python. Artikel ini akan memberikan anda beberapa contoh kod konkrit untuk membantu anda bermula dengan cepat. Cetak HelloWorldprint("HelloWorld") Ini ialah contoh kod paling mudah dalam Python. Fungsi print() digunakan untuk mengeluarkan kandungan yang ditentukan

Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Mar 04, 2024 pm 04:54 PM

"Contoh Pengaturcaraan Bahasa Pergi: Contoh Kod dalam Pembangunan Web" Dengan perkembangan pesat Internet, pembangunan Web telah menjadi bahagian yang amat diperlukan dalam pelbagai industri. Sebagai bahasa pengaturcaraan dengan fungsi berkuasa dan prestasi unggul, bahasa Go semakin digemari oleh pembangun dalam pembangunan web. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk pembangunan Web melalui contoh kod tertentu, supaya pembaca boleh memahami dengan lebih baik dan menggunakan bahasa Go untuk membina aplikasi Web mereka sendiri. 1. Pelayan HTTP Mudah Mula-mula, mari kita mulakan dengan a

Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Feb 19, 2024 pm 03:00 PM

Pembolehubah PHP menyimpan nilai semasa runtime program dan sangat penting untuk membina aplikasi WEB yang dinamik dan interaktif. Artikel ini melihat secara mendalam pembolehubah PHP dan menunjukkannya dalam tindakan dengan 10 contoh kehidupan sebenar. 1. Simpan input pengguna $nama pengguna=$_POST["nama pengguna"];$passWord=$_POST["kata laluan"] Contoh ini mengekstrak nama pengguna dan kata laluan daripada penyerahan borang dan menyimpannya dalam pembolehubah untuk pemprosesan selanjutnya. 2. Tetapkan nilai konfigurasi $database_host="localhost";$database_username="username";$database_pa

Java melaksanakan kod isihan gelembung mudah Java melaksanakan kod isihan gelembung mudah Jan 30, 2024 am 09:34 AM

Contoh kod paling ringkas bagi jenis gelembung Java ialah algoritma pengisihan biasa. Idea asasnya ialah melaraskan urutan secara beransur-ansur ke dalam urutan tersusun melalui perbandingan dan pertukaran elemen bersebelahan. Berikut ialah contoh kod Java ringkas yang menunjukkan cara melaksanakan isihan gelembung: publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Mar 04, 2024 pm 03:09 PM

Tajuk: Dari Permulaan hingga Penguasaan: Pelaksanaan Kod Struktur Data Yang Biasa Digunakan dalam Bahasa Go Struktur data memainkan peranan penting dalam pengaturcaraan dan merupakan asas pengaturcaraan. Dalam bahasa Go, terdapat banyak struktur data yang biasa digunakan, dan menguasai pelaksanaan struktur data ini adalah penting untuk menjadi seorang pengaturcara yang baik. Artikel ini akan memperkenalkan struktur data yang biasa digunakan dalam bahasa Go dan memberikan contoh kod yang sepadan untuk membantu pembaca daripada mula menjadi mahir dalam struktur data ini. 1. Array Array ialah struktur data asas, kumpulan daripada jenis yang sama

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Jul 05, 2023 pm 09:57 PM

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh Kod Java untuk Melaksanakan Antara Muka Dengan Pantas Dengan perkembangan pesat teknologi IoT dan peningkatan pengkomputeran tepi, semakin banyak perusahaan mula memberi perhatian kepada aplikasi pengkomputeran tepi. Huawei Cloud menyediakan perkhidmatan pengkomputeran edge, menyediakan perusahaan dengan sumber pengkomputeran yang sangat boleh dipercayai dan persekitaran pembangunan yang mudah, menjadikan aplikasi pengkomputeran tepi lebih mudah untuk dilaksanakan. Artikel ini akan memperkenalkan cara untuk melaksanakan antara muka pengkomputeran tepi Awan Huawei dengan cepat melalui kod Java. Pertama, kita perlu menyediakan persekitaran pembangunan. Pastikan anda memasang Java Development Kit (

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Aug 06, 2023 pm 04:49 PM

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori adalah bahagian yang amat diperlukan dalam banyak perusahaan. Bagi syarikat yang mempunyai berbilang gudang, fungsi pengurusan inventori amat penting. Dengan mengurus dan menjejak inventori dengan betul, syarikat boleh memperuntukkan inventori antara gudang yang berbeza, mengoptimumkan kos operasi dan meningkatkan kecekapan kerjasama. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis kod bagi fungsi pengurusan gudang inventori dan memberikan anda contoh kod yang berkaitan. 1. Wujudkan pangkalan data sebelum mula menulis kod untuk fungsi pengurusan gudang inventori.

Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Feb 18, 2024 am 10:52 AM

Panduan Menulis Kod Kaedah Isih Pemilihan Java dan Contoh Isihan pemilihan ialah algoritma pengisihan yang mudah dan intuitif Ideanya adalah untuk memilih elemen terkecil (atau terbesar) daripada elemen yang tidak diisih setiap kali dan menukarnya sehingga semua elemen diisih. Artikel ini akan menyediakan panduan menulis kod untuk pengisihan pemilihan dan melampirkan kod sampel Java tertentu. Prinsip Algoritma Prinsip asas isihan pemilihan ialah membahagikan tatasusunan yang hendak diisih kepada dua bahagian, diisih dan tidak diisih Setiap kali, elemen terkecil (atau terbesar) dipilih daripada bahagian yang tidak diisih dan diletakkan di hujung bahagian yang diisih. Ulang perkara di atas

See all articles