最近项目中使用到了天气预报的功能,需要从网上获取天气数据,然后显示在公司系统的页面上。
在这里和大家分享下我的做法,希望能对大家有所帮助,如果有错误,欢迎大家指正。
先给大家看看效果:
下面开始进行讲解。
1.找API接口
首先先去网上找一个免费的天气API,这里推荐大家去百度API Store找,有免费使用的。
我是用的是 ,接口地址是:http://apis.baidu.com/heweather/weather/free
2.后台代码
1 package com.byteslounge.websockets; 2 3 import bean.Response; 4 5 import javax.net.ssl.HttpsURLConnection; 6 import java.io.BufferedReader; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.net.HttpURLConnection; 10 import java.net.URL; 11 import java.util.HashMap; 12 import java.util.Map; 13 14 15 public class Weather { 16 17 public static String requests(String httpUrl, String httpArg) { 18 BufferedReader reader = null; 19 String result = null; 20 StringBuffer sbf = new StringBuffer(); 21 httpUrl = httpUrl + "?" + httpArg; 22 23 try { 24 URL url = new URL(httpUrl); 25 HttpURLConnection connection = (HttpURLConnection) url 26 .openConnection(); 27 connection.setRequestMethod("GET"); 28 // 填入apikey到HTTP header 29 connection.setRequestProperty("apikey", "0bc030269671ad02d5730afb5c355b34"); 30 connection.connect(); 31 InputStream is = connection.getInputStream(); 32 reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 33 String strRead = null; 34 while ((strRead = reader.readLine()) != null) { 35 sbf.append(strRead); 36 sbf.append("\r\n"); 37 } 38 reader.close(); 39 result = sbf.toString(); 40 } catch (Exception e) { 41 e.printStackTrace(); 42 } 43 return result; 44 } 45 }
3.前端JSP调用requests()方法
1 <% 2 //通过接口获取天气当天天气数据 3 String jsons = new Weather().requests("http://apis.baidu.com/heweather/weather/free", "city=yinzhou"); 4 String json = new Weather().requests("http://apis.baidu.com/heweather/weather/free", "city=ningbo"); 5 %>
jsons里面的信息:。
最后大家就可以使用json对数据进行获取,再使用jquery将数据放置在页面上了。这里给大家推荐个json转化器,http://c.runoob.com/front-end/53,可以方便大家进行数据的提取。