`
jilong-liang
  • 浏览: 481258 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

HttpClient+Gson解析中国天气网的天气预报信息

阅读更多
package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;

import com.entity.Weatherinfo;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;

/**
 *@Author:liangjilong
 *@Date:2013-8-28
 *@CopyRight:liangjilong
 *@Email:jilongliang@sina.com
 *@Description:
 *http://cj.weather.com.cn/
 *解析中国天气网的天气预报信息
 */
@SuppressWarnings("all")
public class TestWeather {
	/**
	 * 读配置文件
	 * @param fileName
	 * @return key-value
	 * @throws Exception
	 */
	public static Map read(String fileName) throws Exception{
		Map map=new HashMap();
		BufferedReader reader=null;
		FileReader fr=null;
		//String root=TestWeather.class.getClassLoader().getResource(".").toURI().getPath();
		//fileName=root+fileName;
		File file=null;
		file=new File(fileName);
		fr=new FileReader(file);
		reader=new BufferedReader(fr);
		String text=reader.readLine();
		while(text!=null){
			String value[]=text.split(":");//:分开
			if(value.length>0){
				String key=value[0];// 
				map.put(key, value[1]);
			}
			 text=reader.readLine();
		}
		return map;
	}
	/**
	 * 根据城市去获取天气信息
	 * @param city
	 * @param fileName
	 * @return
	 * @throws Exception
	 */
	public  static Weatherinfo getWeather(String city,String fileName){
		Weatherinfo weatherinfo=null; GetMethod method=null;
		try {
			Map map=read(fileName);
			List list=new ArrayList(map.keySet());
			for (Iterator iterator = list.iterator(); iterator.hasNext();) {
				String key = (String) iterator.next();//城市
				String value=map.get(key).toString();//编码
				if(city.equals(key)){
					 String url="http://m.weather.com.cn/data/"+value+".html";
					 HttpClient httpClient=new HttpClient();
					 method=new GetMethod(url);
					 int status=httpClient.executeMethod(method);
					 if(status==HttpStatus.SC_OK){
						 String json=method.getResponseBodyAsString();
						 int start=json.indexOf("weatherinfo")+13;
						 String newJson=json.substring(start,json.lastIndexOf("}"));
						 weatherinfo= new Gson().fromJson(newJson, Weatherinfo.class);
					 }else{
						 System.err.println("网络异常!");
					 }
				}
			}
		} catch (JsonSyntaxException e) {
			e.printStackTrace();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(method!=null)
			 method=null;
			 method.releaseConnection();
		}
		return weatherinfo;
	} 
	
	
	public static void main(String[] args) throws Exception{
		String city="广州";
		String fileName="src/city.txt";
		Weatherinfo weatherinfo=getWeather(city,fileName);
		String City= weatherinfo.getCity();
		String Date_y=weatherinfo.getDate_y();
		String Week=weatherinfo.getWeek();
		String temp1=weatherinfo.getTemp1();
		String weather1=weatherinfo.getWeather1();
		String weather2=weatherinfo.getWeather2();
		String weather3=weatherinfo.getWeather3();
		String weather4=weatherinfo.getWeather4();
		String weather5=weatherinfo.getWeather5();
		String weather6=weatherinfo.getWeather6();
		String index=weatherinfo.getIndex();
		String index_d=weatherinfo.getIndex_d();
		weatherinfo.getIndex48();
		weatherinfo.getIndex48_d();
		System.out.println("今天是"+Week+",天气情况如下:"+weather1+weather2+weather3+weather4+weather5+weather6+","+index_d);
	}
}

 city.txt

北京:101010100
海淀:101010200
朝阳:101010300
顺义:101010400
怀柔:101010500
通州:101010600
昌平:101010700
延庆:101010800
丰台:101010900
石景山:101011000
大兴:101011100
房山:101011200
密云:101011300
门头沟:101011400
平谷:101011500
八达岭:101011600
佛爷顶:101011700
汤河口:101011800
密云上甸子:101011900
斋堂:101012000
霞云岭:101012100
北京城区:101012200
天津:101030100
宝坻:101030300
东丽:101030400
西青:101030500
北辰:101030600
蓟县:101031400
汉沽:101030800
静海:101030900
津南:101031000
塘沽:101031100
大港:101031200
武清:101030200
宁河:101030700
上海:101020100
宝山:101020300
嘉定:101020500
南汇:101020600
浦东:101021300
青浦:101020800
松江:101020900
奉贤:101021000
崇明:101021100
徐家汇:101021200
闵行:101020200
金山:101020700
石家庄:101090101
张家口:101090301
承德:101090402
唐山:101090501
秦皇岛:101091101
沧州:101090701
衡水:101090801
邢台:101090901
邯郸:101091001
保定:101090201
廊坊:101090601
郑州:101180101
新乡:101180301
许昌:101180401
平顶山:101180501
信阳:101180601
南阳:101180701
开封:101180801
洛阳:101180901
商丘:101181001
焦作:101181101
鹤壁:101181201
濮阳:101181301
周口:101181401
漯河:101181501
驻马店:101181601
三门峡:101181701
济源:101181801
安阳:101180201
合肥:101220101
芜湖:101220301
淮南:101220401
马鞍山:101220501
安庆:101220601
宿州:101220701
阜阳:101220801
亳州:101220901
黄山:101221001
滁州:101221101
淮北:101221201
铜陵:101221301
宣城:101221401
六安:101221501
巢湖:101221601
池州:101221701
蚌埠:101220201
杭州:101210101
舟山:101211101
湖州:101210201
嘉兴:101210301
金华:101210901
绍兴:101210501
台州:101210601
温州:101210701
丽水:101210801
衢州:101211001
宁波:101210401
重庆:101040100
合川:101040300
南川:101040400
江津:101040500
万盛:101040600
渝北:101040700
北碚:101040800
巴南:101040900
长寿:101041000
黔江:101041100
万州天城:101041200
万州龙宝:101041300
涪陵:101041400
开县:101041500
城口:101041600
云阳:101041700
巫溪:101041800
奉节:101041900
巫山:101042000
潼南:101042100
垫江:101042200
梁平:101042300
忠县:101042400
石柱:101042500
大足:101042600
荣昌:101042700
铜梁:101042800
璧山:101042900
丰都:101043000
武隆:101043100
彭水:101043200
綦江:101043300
酉阳:101043400
秀山:101043600
沙坪坝:101043700
永川:101040200
福州:101230101
泉州:101230501
漳州:101230601
龙岩:101230701
晋江:101230509
南平:101230901
厦门:101230201
宁德:101230301
莆田:101230401
三明:101230801
兰州:101160101
平凉:101160301
庆阳:101160401
武威:101160501
金昌:101160601
嘉峪关:101161401
酒泉:101160801
天水:101160901
武都:101161001
临夏:101161101
合作:101161201
白银:101161301
定西:101160201
张掖:101160701
广州:101280101
惠州:101280301
梅州:101280401
汕头:101280501
深圳:101280601
珠海:101280701
佛山:101280800
肇庆:101280901
湛江:101281001
江门:101281101
河源:101281201
清远:101281301
云浮:101281401
潮州:101281501
东莞:101281601
中山:101281701
阳江:101281801
揭阳:101281901
茂名:101282001
汕尾:101282101
韶关:101280201
南宁:101300101
柳州:101300301
来宾:101300401
桂林:101300501
梧州:101300601
防城港:101301401
贵港:101300801
玉林:101300901
百色:101301001
钦州:101301101
河池:101301201
北海:101301301
崇左:101300201
贺州:101300701
贵阳:101260101
安顺:101260301
都匀:101260401
兴义:101260906
铜仁:101260601
毕节:101260701
六盘水:101260801
遵义:101260201
凯里:101260501
昆明:101290101
红河:101290301
文山:101290601
玉溪:101290701
楚雄:101290801
普洱:101290901
昭通:101291001
临沧:101291101
怒江:101291201
香格里拉:101291301
丽江:101291401
德宏:101291501
景洪:101291601
大理:101290201
曲靖:101290401
保山:101290501
呼和浩特:101080101
乌海:101080301
集宁:101080401
通辽:101080501
阿拉善左旗:101081201
鄂尔多斯:101080701
临河:101080801
锡林浩特:101080901
呼伦贝尔:101081000
乌兰浩特:101081101
包头:101080201
赤峰:101080601
南昌:101240101
上饶:101240301
抚州:101240401
宜春:101240501
鹰潭:101241101
赣州:101240701
景德镇:101240801
萍乡:101240901
新余:101241001
九江:101240201
吉安:101240601
武汉:101200101
黄冈:101200501
荆州:101200801
宜昌:101200901
恩施:101201001
十堰:101201101
神农架:101201201
随州:101201301
荆门:101201401
天门:101201501
仙桃:101201601
潜江:101201701
襄樊:101200201
鄂州:101200301
孝感:101200401
黄石:101200601
咸宁:101200701
成都:101270101
自贡:101270301
绵阳:101270401
南充:101270501
达州:101270601
遂宁:101270701
广安:101270801
巴中:101270901
泸州:101271001
宜宾:101271101
内江:101271201
资阳:101271301
乐山:101271401
眉山:101271501
凉山:101271601
雅安:101271701
甘孜:101271801
阿坝:101271901
德阳:101272001
广元:101272101
攀枝花:101270201
银川:101170101
中卫:101170501
固原:101170401
石嘴山:101170201
吴忠:101170301
西宁:101150101
黄南:101150301
海北:101150801
果洛:101150501
玉树:101150601
海西:101150701
海东:101150201
海南:101150401
济南:101120101
潍坊:101120601
临沂:101120901
菏泽:101121001
滨州:101121101
东营:101121201
威海:101121301
枣庄:101121401
日照:101121501
莱芜:101121601
聊城:101121701
青岛:101120201
淄博:101120301
德州:101120401
烟台:101120501
济宁:101120701
泰安:101120801
西安:101110101
延安:101110300
榆林:101110401
铜川:101111001
商洛:101110601
安康:101110701
汉中:101110801
宝鸡:101110901
咸阳:101110200
渭南:101110501
太原:101100101
临汾:101100701
运城:101100801
朔州:101100901
忻州:101101001
长治:101100501
大同:101100201
阳泉:101100301
晋中:101100401
晋城:101100601
吕梁:101101100
乌鲁木齐:101130101
石河子:101130301
昌吉:101130401
吐鲁番:101130501
库尔勒:101130601
阿拉尔:101130701
阿克苏:101130801
喀什:101130901
伊宁:101131001
塔城:101131101
哈密:101131201
和田:101131301
阿勒泰:101131401
阿图什:101131501
博乐:101131601
克拉玛依:101130201
拉萨:101140101
山南:101140301
阿里:101140701
昌都:101140501
那曲:101140601
日喀则:101140201
林芝:101140401
台北县:101340101
高雄:101340201
台中:101340401
海口:101310101
三亚:101310201
东方:101310202
临高:101310203
澄迈:101310204
儋州:101310205
昌江:101310206
白沙:101310207
琼中:101310208
定安:101310209
屯昌:101310210
琼海:101310211
文昌:101310212
保亭:101310214
万宁:101310215
陵水:101310216
西沙:101310217
南沙岛:101310220
乐东:101310221
五指山:101310222
琼山:101310102
长沙:101250101
株洲:101250301
衡阳:101250401
郴州:101250501
常德:101250601
益阳:101250700
娄底:101250801
邵阳:101250901
岳阳:101251001
张家界:101251101
怀化:101251201
黔阳:101251301
永州:101251401
吉首:101251501
湘潭:101250201
南京:101190101
镇江:101190301
苏州:101190401
南通:101190501
扬州:101190601
宿迁:101191301
徐州:101190801
淮安:101190901
连云港:101191001
常州:101191101
泰州:101191201
无锡:101190201
盐城:101190701
哈尔滨:101050101
牡丹江:101050301
佳木斯:101050401
绥化:101050501
黑河:101050601
双鸭山:101051301
伊春:101050801
大庆:101050901
七台河:101051002
鸡西:101051101
鹤岗:101051201
齐齐哈尔:101050201
大兴安岭:101050701
长春:101060101
延吉:101060301
四平:101060401
白山:101060901
白城:101060601
辽源:101060701
松原:101060801
吉林:101060201
通化:101060501
沈阳:101070101
鞍山:101070301
抚顺:101070401
本溪:101070501
丹东:101070601
葫芦岛:101071401
营口:101070801
阜新:101070901
辽阳:101071001
铁岭:101071101
朝阳:101071201
盘锦:101071301
大连:101070201
锦州:101070701 

 

1
2
分享到:
评论
1 楼 derongit123 2017-04-27  
请问一下Weatherinfo 的这个类怎么弄

相关推荐

    基于SSM+maven+httpClient+jsoup实现小说网站项目.zip

    基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+...

    基于SSM+maven+httpClient+jsoup实现小说网站项目源码.zip

    基于SSM+maven+httpClient+jsoup实现小说网站项目源码.zip 基于SSM+maven+httpClient+jsoup实现小说网站项目源码.zip 基于SSM+maven+httpClient+jsoup实现小说网站项目源码.zip 基于SSM+maven+httpClient+jsoup实现...

    Httpclient+testng接口测试小例子

    在"Httpclient+testng接口测试小例子"中,我们将使用以下步骤进行接口测试: 1. **环境准备**:首先,确保项目中已经添加了Apache HttpClient和TestNG的依赖。这些通常通过Maven或Gradle等构建工具进行管理,通过在...

    利用HttpClient获取数据并用Gson解析Json数据

    本教程将专注于使用Apache HttpClient库获取网络数据,然后使用Google的Gson库解析JSON格式的数据。这是一个基础但重要的技能,对于任何想要与服务器进行交互的开发者来说都是必备的。 首先,我们需要了解`...

    Retrofit+OkHttp+Gson+okhttp-urlconnection-2.5.0

    总的来说,Retrofit+OkHttp+Gson的组合为Android开发者提供了强大的网络请求能力,使得网络接口的调用变得简单而直观。通过这些库,我们可以快速地构建出高效的网络请求层,同时处理复杂的JSON数据解析,大大提高了...

    httpclient和gson的JAR包.zip

    结合`Httpclient`和`Gson`,我们可以轻松地构建一个完整的网络通信流程:先用`Gson`将Java对象转换成JSON,然后利用`Httpclient`将JSON数据作为请求体发送到服务器;收到服务器响应后,再用`Gson`将JSON响应转换回...

    HTTPClient + MQ + servlet

    在这个场景中,我们关注的是"HTTPClient + MQ + servlet"的组合,这是一个典型的后端服务架构组件。让我们深入了解一下这些技术及其在实际应用中的作用。 首先,**HTTPClient**是Java中用于发送HTTP请求的库,它...

    爬虫:httpclient+jsoup

    在IT领域,网络爬虫是一种自动化程序,用于从...总之,HttpClient和Jsoup是Java爬虫开发中的两个强大工具,它们结合使用能有效地抓取和解析网页信息。理解它们的工作原理和用法,对于构建高效的网络爬虫至关重要。

    Android应用源码之Android快速框架+多线程下载框架的技术(Android + Afinal+gson).zip

    这个压缩包"Android应用源码之Android快速框架+多线程下载框架的技术(Android + Afinal+gson)"提供了两个关键领域的深入学习资料:Android快速框架和多线程下载框架。我们将详细探讨这两个主题,以及它们与Android、...

    jsoup+httpclient+jar包

    它提供了一种易于使用的API,用于抓取和解析数据,提取和修改数据,就像DOM、CSS和jQuery一样。JSoup能够理解HTML的不完美之处,使得在处理网页内容时更加灵活和强大。 **HTTPClient库** Apache HttpClient是一个...

    HttpClient + Jsoup 模拟登陆,解析HTML,信息筛选(广工图书馆)

    5. **页面解析与信息筛选**:登录成功后,我们可以使用HttpClient携带刚才的cookie再次请求图书馆的相关页面。接着用Jsoup解析HTML,筛选出需要的信息,比如图书列表、借阅记录等。 在实际应用中,需要注意以下几点...

    HttpClient+ Spring实现多线程

    注意在并发环境中,必须确保HttpClient的线程安全,例如,避免在多个线程之间共享同一个HttpClient实例,而是为每个请求创建新的HttpClient,或者使用连接池来复用连接。 总的来说,HttpClient与Spring的结合使得在...

    httpClient+jsoup 抓取网页数据

    在"网易贵金属"的例子中,你可能需要使用HttpClient发送GET请求到网易贵金属的页面,然后使用Jsoup解析返回的HTML,找到包含贵金属价格、新闻等信息的部分,从而实现数据抓取。实际操作时,可能还需要考虑登录、分页...

    httpclient+knife4j.zip

    这个压缩包"HTTPClient+Knife4J"很可能是为了演示如何在SpringBoot项目中使用HttpClient进行网络请求,并结合Knife4J生成文档。开发者可以下载解压后,查看源代码学习如何整合这两个组件,理解它们在实际项目中的...

    一个使用HttpClient调用天气预报接口的例程

    天气预报接口返回的数据是JSON格式,这意味着我们需要解析JSON来提取天气信息。 4. **GBK编码**:GBK是汉字的一种编码标准,是中国大陆的GBK编码系统。在Android中,如果服务器返回的数据不是UTF-8编码,而使用了...

    ksoap+GSON两个jar打包下载,Android开发交互必备包

    在Android应用开发中,与服务器进行数据交互是不可或缺的一部分,而这通常涉及到网络请求和数据解析。本篇将详细讲解标题中的两个关键库——ksoap和GSON,它们在Android开发中的作用及其使用方法。 首先,ksoap是一...

    Android之快速框架+多线程下载框架的技术(Android + Afinal+gson)_android源码.zip

    - **网络请求**:Afinal内置了HttpClient,支持异步和同步网络请求,可以方便地进行JSON或XML数据的解析。 3. **多线程下载框架**: - **多线程下载**:为了提高下载效率,通常会采用多线程的方式。每个线程负责...

Global site tag (gtag.js) - Google Analytics