免费天气接口:http://mobile.weather.com.cn/data/sk/城市ID.html

例如: http://mobile.weather.com.cn/data/sk/101240701.html

返回数据:{"sk_info":{"date":"20131012","cityName":"赣州","areaID":"101240701","temp":"32℃","tempF":"89.6℉","wd":"东北风","ws":"3级","sd":"27%","time":"15:10","sm":"暂无实况"}}

城市编码:点我下载

代码:

    @Test
public void testetWeatherInfo(){
//南昌天气预报信息
String u="http://mobile.weather.com.cn/data/sk/101240101.html";
String info=WeatherUtil.getWeatherInfo(u);
//输出
System.out.println("info:"+info);
}
/**
* @author hh
*/
public class WeatherUtil {
/**
* 获取天气信息
* @param urlPath 请求链接 eg:http://mobile.weather.com.cn/data/sk/101240701.html
* @return eg:{"sk_info":{"date":"20131012","cityName":"赣州","areaID":"101240701","temp":"32℃","tempF":"89.6℉","wd":"东北风","ws":"3级","sd":"27%","time":"15:10","sm":"暂无实况"}}
*/
public static String getWeatherInfo(String urlPath){
//拼接接收的信息
StringBuffer info=new StringBuffer();
//读取每行的数据
String inputline="";
try {
//实例化URL对象
URL url= new URL(urlPath);
//获取应用程序和 URL 之间的通信链接
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
// 请求方法
conn.setRequestMethod("GET");
//获取url的资源输入流
InputStreamReader inReader=new InputStreamReader(conn.getInputStream(),"utf-8");
//获取缓冲字符输入流
BufferedReader bufferedReader=new BufferedReader(inReader);
//读取每行数据(同时赋值,判断是否为空)
while((inputline=bufferedReader.readLine())!=null){
//添加信息
info.append(inputline);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return info.toString();
}
}

返回数据: