![](/uploads/image/0976.jpg)
查询天气预报在APP中常用的一个常用功能,聚合数据全国天气预报接口可以根据根据城市名/id查询天气、根据IP查询天气、据GPS坐标查询天气、查询城市天气三小时预报,并且支持全国不同城市天气预报查询。
代码描述:基于JAVA的全国天气预报接口调用示例,根据文档中注明的需求参数,调用接口返回数据。 关联数据:全国天气预报接口
接口地址:www.juhe/docs/api/id/39
step1:选择本文所示例的接口"全国天气预报接口" url:www.juhe/docs/api/id/39/aid/87
step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key
南京海底世界在哪里step3:看文档!!!学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我
们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.
全国天气预报接口下面有六个子接口,打开第一个接口链接,看文档发现需要传入一个城市名或者城市ID参数,这个参数我们可以通过第六个子接口获取(接口之间参数的调用类似于java中方法之间的调用),即支持城市列表获取.所以示例中我们先调用这个接口.调用接口涉及到请求网络资源的问题,这里我封装了一个工具类,包含GET和POST两种方法
step4:上代码
Demo1:网络访问工具类(封装get和post方法)
1. package juheAPI;
2.
3. import java.io.BufferedReader;
4. import java.io.BufferedWriter;
5. import java.io.InputStream;
6. import java.io.InputStreamReader;
7. import java.io.OutputStream;
8. import java.io.OutputStreamWriter;
9. import java.HttpURLConnection;
10. import java.URL;
11. import java.util.Map;
12.
13. public class PureNetUtil {
14.
15. public static String get(String url){
16. return post(url,null);
17. }
18.
19. public static String post(String url,Map param){
20. HttpURLConnection conn=null;
21. try {
22. URL u=new URL(url);
23. conn=(HttpURLConnection) u.openConnection();
24. StringBuffer sb=null;
25. if(param!=null){//如果请求参数不为空
26. sb=new StringBuffer();
27. 都江堰疫情最新
28. //默认为荔波旅游景点有哪些false,post方法需要写入参数,设定true
29. conn.setDoOutput(true);
30. //设定post方法,默认get
31. conn.setRequestMethod("POST");
32. //获得输出流
33. OutputStream OutputStream();
34. //对输出流封装成高级输出流
35. BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));
36. //将参数封装成键值对的形式
37. for(Map.Entry Set()){
38. sb.Key()).append("=").Value()).append("&");
39. }
40. //将参数通过输出流写入
41. writer.write(sb.String().length()-1).toString());
42. writer.close();//一定要关闭,不然可能出现参数不全的错误
43. sb=null;
44. }
45. t();//建立连接
46. sb=new StringBuffer();
47. //获取连接状态码
48. int ResponseCode();
49. BufferedReader reader=null;
50. if(recode==200){
51. //Returns an input stream that reads from this open connection
52. //从连接中获取输入流
53. 加德满都的风铃InputStream InputStream();
54. //对输入流进行封装
55. reader=new BufferedReader(new InputStreamReader(in)); 安岳县属于哪个市
56. String str=null;
57. sb=new 广西最好玩的旅游景点StringBuffer();
58. //从输入流中读取数据
59. while((adLine())!=null){
60. sb.append(str).Property("line.separator"));
61. }
62. //关闭输入流
63. reader.close();
64. if (sb.toString().length() == 0) {
65. return null;
66. }
67. return sb.toString().substring(0,
68. sb.toString().length() -&Property("line.separator").length());
69. }
70. } catch (Exception e) {
71. e.printStackTrace();
72. return null;
73. }finally{
74. if(conn!=null)//关闭连接
75. conn.disconnect();
76. }
77. return null;
78. }
79.
80. }
Demo2:调用获取城市列表接口示例
1. package juheAPI;
2.
3. import net.sf.json.JSONArray;
4. import net.sf.json.JSONObject;
5.
6.
7.
8. public class GetCityList {
9.
10. public static String excute(){
11. String url="v.juhe/weather/citys?key=***a7558b2e0bedaa19673f74a6809ce";//接口URL
12. //PureNetUtil是一个封装了get和post方法获取网络请求数据的工具类
13. return (url);//使用get方法
14. }
15.
16. public static String getIDBycityName(String cityName) {
17. String result=excute();//返回接口结果,得到json格式数据
18. if(result!=null){
19. JSONObject obj=JSONObject.fromObject(result);
20. String("resultcode");//得到返回状态码