GVKun编程网logo

读取RSS源的天气预报Web Server实现(获取天气预报接口)

12

本文将分享读取RSS源的天气预报WebServer实现的详细内容,并且还将对获取天气预报接口进行详尽解释,此外,我们还将为大家带来关于ASP.NET使用WebService实现天气预报功能、axis2

本文将分享读取RSS源的天气预报Web Server实现的详细内容,并且还将对获取天气预报接口进行详尽解释,此外,我们还将为大家带来关于ASP.NET使用WebService实现天气预报功能、axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务、CXF 调用天气预报webservice、JAVA + WeatherWebService 实现天气预报接口调取的相关知识,希望对你有所帮助。

本文目录一览:

读取RSS源的天气预报Web Server实现(获取天气预报接口)

读取RSS源的天气预报Web Server实现(获取天气预报接口)

在VS2010中完成

1.数据结构

   /// <summary>
    /// 数据成员
    /// </summary>
    public class rss
    {        
         public string Title;
         public List<Item> Items=new List<Item>();         
    }
    public class Item
    {
        public string Title;
        public string Description;
        public string PubDate;
    }
    public class Weather
    {
        public DateTime WeatherDate;
        public DateTime PubDate;
        public string Temp;
        public string Wind;
        public string Cloud;
    }

2.功能实现

  •    读取RSS源,将读到的文档相关标签的内容存入类rss中,函数ReadXml,具体参考我的另一边博文----C#解析RSS新闻源
  •    将rss数据中的变量存储为天气所需要的特定类型,也即是类Weather,实现代码SetWeather
     public List<Weather> SetWeather(string where)
             {
                 rss rss = new rss();
                 switch (where)
                 { 
                     case "南京":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58238/count_3/rss");
                         break;
                     case "北京":
                         rss = ReadXml("http://weather.raychou.com/?/detail/54511/count_3/rss");
                         break;
                     case "上海":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58367/count_3/rss");
                         break;
                     case "广东":
                         rss = ReadXml("http://weather.raychou.com/?/detail/59287/count_3/rss");
                         break;
                     case "重庆":
                         rss = ReadXml("http://weather.raychou.com/?/detail/57516/count_3/rss");
                         break;
                     case "厦门":
                         rss = ReadXml("http://weather.raychou.com/?/detail/59134/count_3/rss");
                         break;
                     case "杭州":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58457/count_3/rss");
                         break;
                     case "大连":
                         rss = ReadXml("http://weather.raychou.com/?/detail/54662/count_3/rss");
                         break;
                 }
                 List<Weather> weather = new List<Weather>();
                 Weather weather_one = new Weather();
                 for (int i = 0; i < rss.Items.Count; i++)
                 {
                     weather_one.WeatherDate = DateTime.Parse(rss.Items[i].Title);
                     weather_one.PubDate = DateTime.Parse(rss.Items[i].PubDate);
                     string[] sArray = rss.Items[i].Description.Split('' '');
                     weather_one.Cloud=sArray[0].ToString();
                     if (weather_one.Cloud.Contains("雪"))
                         weather_one.Cloud = "雪";
                     else if (weather_one.Cloud.Contains("雨") && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "雨";
                     else if (weather_one.Cloud.Contains("阴") && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "阴";
                     else if (weather_one.Cloud.Contains("云") && weather_one.Cloud.Contains("阴") == false && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "云";
                     else if (weather_one.Cloud.Contains("晴") && weather_one.Cloud.Contains("云") == false && weather_one.Cloud.Contains("阴") == false && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "晴";
                     else
                         weather_one.Cloud = "世界末日到了!";
                     weather_one.Temp=sArray[1].ToString();//情 云 雨 雪 阴
                     weather_one.Wind=sArray[2].ToString();
                     weather.Add(weather_one);
                     
                 } 
                 return weather;
    
             }   

    返回的是一个list<Weather>
  • 最后就可以生成一个简单的天气预报Web Server
  • 完整代码如下
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Xml;
    
    namespace WebApplication1
    {
        /// <summary>
        /// Rss 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        // [System.Web.Script.Services.ScriptService]
        public class Rss : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";            
            }
            
            /*public string GetWind(DateTime date)
            {
                   
            }
            [WebMethod]
            public int GetTemp(DateTime date)
            { 
                 
            }*/
            public rss ReadXml(string uri)
            {
                XmlTextReader Reader = new XmlTextReader(uri);
                // XmlValidatingReader Valid = new XmlValidatingReader(Reader);
                // Valid.ValidationType = ValidationType.None;
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Reader);
                XmlNode rssNode = FoundChildNode(xmlDoc, "rss");
                XmlNode channelNode = FoundChildNode(rssNode, "channel");
                rss channel = new rss();
                //channel.Items =  new List<rss.Item>();
                for (int i = 0; i < channelNode.ChildNodes.Count; i++)
                {
                    switch (channelNode.ChildNodes[i].Name)
                    {
                        case "title":
                            {
                                channel.Title = channelNode.ChildNodes[i].InnerText;
                                break;
                            }
                        case "item":
                            {
                                Item item = this.getRssItem(channelNode.ChildNodes[i]);
                                channel.Items.Add(item);
                                break;
                            }
                    }
                }
                return channel;
    
            }
            private XmlNode FoundChildNode(XmlNode Node, string Name)
            {
                XmlNode childlNode = null;
                for (int i = 0; i < Node.ChildNodes.Count; i++)
                {
                    if (Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0)
                    {
                        childlNode = Node.ChildNodes[i];
                        return childlNode;
                    }
                }
                return childlNode;
            }
            private Item getRssItem(XmlNode Node)
            {
                Item item = new Item();
                for (int i = 0; i < Node.ChildNodes.Count; i++)
                {
                    if (Node.ChildNodes[i].Name == "title")
                    {
                        item.Title = Node.ChildNodes[i].InnerText;
                    }
                    else if (Node.ChildNodes[i].Name == "description")
                    {
                        item.Description = Node.ChildNodes[i].InnerText;
                    }
                    else if (Node.ChildNodes[i].Name == "pubDate")
                    {
                        item.PubDate = Node.ChildNodes[i].InnerText;
                    }
                }
                return item;
            }
             [WebMethod]
            public List<Weather> SetWeather(string where)
             {
                 rss rss = new rss();
                 switch (where)
                 { 
                     case "南京":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58238/count_3/rss");
                         break;
                     case "北京":
                         rss = ReadXml("http://weather.raychou.com/?/detail/54511/count_3/rss");
                         break;
                     case "上海":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58367/count_3/rss");
                         break;
                     case "广东":
                         rss = ReadXml("http://weather.raychou.com/?/detail/59287/count_3/rss");
                         break;
                     case "重庆":
                         rss = ReadXml("http://weather.raychou.com/?/detail/57516/count_3/rss");
                         break;
                     case "厦门":
                         rss = ReadXml("http://weather.raychou.com/?/detail/59134/count_3/rss");
                         break;
                     case "杭州":
                         rss = ReadXml("http://weather.raychou.com/?/detail/58457/count_3/rss");
                         break;
                     case "大连":
                         rss = ReadXml("http://weather.raychou.com/?/detail/54662/count_3/rss");
                         break;
                 }
                 List<Weather> weather = new List<Weather>();
                 Weather weather_one = new Weather();
                 for (int i = 0; i < rss.Items.Count; i++)
                 {
                     weather_one.WeatherDate = DateTime.Parse(rss.Items[i].Title);
                     weather_one.PubDate = DateTime.Parse(rss.Items[i].PubDate);
                     string[] sArray = rss.Items[i].Description.Split('' '');
                     weather_one.Cloud=sArray[0].ToString();
                     if (weather_one.Cloud.Contains("雪"))
                         weather_one.Cloud = "雪";
                     else if (weather_one.Cloud.Contains("雨") && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "雨";
                     else if (weather_one.Cloud.Contains("阴") && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "阴";
                     else if (weather_one.Cloud.Contains("云") && weather_one.Cloud.Contains("阴") == false && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "云";
                     else if (weather_one.Cloud.Contains("晴") && weather_one.Cloud.Contains("云") == false && weather_one.Cloud.Contains("阴") == false && weather_one.Cloud.Contains("雨") == false && weather_one.Cloud.Contains("雪") == false)
                         weather_one.Cloud = "晴";
                     else
                         weather_one.Cloud = "世界末日到了!";
                     weather_one.Temp=sArray[1].ToString();//情 云 雨 雪 阴
                     weather_one.Wind=sArray[2].ToString();
                     weather.Add(weather_one);
                     
                 } 
                 return weather;
    
             }   
            
            
        }
       
        /// <summary>
        /// 数据成员
        /// </summary>
        public class rss
        {        
             public string Title;
             public List<Item> Items=new List<Item>();         
        }
        public class Item
        {
            public string Title;
            public string Description;
            public string PubDate;
        }
        public class Weather
        {
            public DateTime WeatherDate;
            public DateTime PubDate;
            public string Temp;
            public string Wind;
            public string Cloud;
        }
    }
    


原文链接: http://blog.csdn.net/txg703003659/article/details/6595384

ASP.NET使用WebService实现天气预报功能

ASP.NET使用WebService实现天气预报功能

本文使用Asp.Net (C#)调用互联网上公开的WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)来实现天气预报,该天气预报 Web 服务,数据来源于中国气象局http://www.cma.gov.cn/,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。

效果图 :

步骤 :

1 、新建web 项目,添加窗体。

2 、 引用右键--> 添加服务引用-->高级--> 添加Web引用。

3 、 将Web接口复制到URL右边的框里-->点击输入框右边的箭头,测试连接(观察左下角看是否连接成功)--> 最右边可以更改Web引用名-->添加引用。

前台代码

<div>
 
 <br />
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Asp.Net 调用WebService实现天气预报<br />
 <br />
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请输入城市名称:<asp:TextBox ID="txtcity" runat="server"></asp:TextBox>
&nbsp;&nbsp;
 <asp:Label ID="Label1" runat="server"BorderColor="Red" Text="如 :上海"></asp:Label>
 <br />
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 <asp:Button ID="btncheck" runat="server" Text="查询" Width="69px" OnClick="btncheck_Click" />
&nbsp;
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 天气概况 : <asp:Label ID="lbtianqi" runat="server"BorderColor="Red" Text=""></asp:Label>
 <br />
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 天气实况 :&nbsp;&nbsp; 
 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 <asp:TextBox ID="txtcityweather" runat="server" Height="62px" TextMode="MultiLine" Width="258px"></asp:TextBox>
&nbsp;&nbsp;
 <br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 <br />
 <br />
 <br />
 <br />
 <br />
 <br />
 
 </div>

后台代码

protected void btncheck_Click(object sender, EventArgs e)
 {
  WeatherService.WeatherWebService w = new WeatherService.WeatherWebService();
  string [] res=new string[23];
  string cityname = txtcity.Text.Trim();
  res = w.getWeatherbyCityName(cityname);
  lbtianqi.Text = cityname + " "+res[6];
  txtcityweather.Text = res[10];

 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • jQuery调用Webservice传递json数组的方法
  • 甩掉ashx和asmx使用jQuery.ajaxWebService请求WebMethod简练处理Ajax
  • 使用jQuery Ajax 请求webservice来实现更简练的Ajax
  • C# WebService发布以及IIS发布
  • jQuery 调用WebService 实例讲解
  • ASP.NET中基于soaphead的webservice安全机制
  • WebService的相关概念

axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务

axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务

        上一节讲了axis2通过wsdl生成客户端程序并本地调用,这种方法由于得配置环境变量,运行dos命令,之后根据生成的代码来编写输出代码,相比较为复杂一些。这节说一下利用axis2纯手动调用网上免费webservice服务,使用这种方式较为简单一些,只需要在引入axis2包后创建一个java类就可以达到我们的目的了

       项目结构如下图:

       

       在引入axis2的jar包后,只需要新建一个testWebService2的java类就够了,下面具体看一下这个类中代码

注意:代码中.wsdl的服务地址链接一定要先在浏览器中运行一下,看是否能成功打开,成功后方可用于代码中

package com.test.weather;

import java.util.Iterator;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.soAP11Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class testWebService2 {

	public static void main(String[] args) throws Exception {
		// axis2利用网上免费webservice服务一个城市的天气情况
		ServiceClient sender = new ServiceClient();
		Options option = new Options();
		option.setSoapVersionURI(SOAP11Constants.soAP_ENVELOPE_NAMESPACE_URI);
		option.setAction("http://WebXml.com.cn/getWeather");
		EndpointReference epfs = new EndpointReference(
				"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");
		option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
		option.setTo(epfs);
		sender.setoptions(option);
		OMFactory fac = OMAbstractFactory.getoMFactory();
		OMNamespace omNs = fac.createOMNamespace("http://WebXml.com.cn/","");
		OMElement data = fac.createOMElement("getWeather",omNs);
		OMElement theCityCode = fac.createOMElement("theCityCode ",omNs);
		OMElement theUserID = fac.createOMElement("theUserID ",omNs);
		theCityCode.setText("北京");
		theUserID.setText("");
		data.addChild(theCityCode);
		data.addChild(theUserID);

		OMElement result = sender.sendReceive(data);
		//System.out.println(result); 
		//----------------
		Iterator in = result.getChildrenWithLocalName("getWeatherResult");
		while(in.hasNext()){
			OMElement om = (OMElement)in.next();
			Iterator in2 = om.getChildElements();
			while(in2.hasNext()){
				System.out.println(in2.next().toString());
				//System.out.println(((OMElement)in2.next()).getText());
			}
		}
	}
}
这个程序是 axis2利用网上免费webservice服务一个城市的天气情况的实例

运行代码中------以上的代码就会得到结果



有结果可以看出信息是xml格式的,如果想去掉节点,直接输出信息,需要把代码中------下方的代码去注释运行,结果如下



利用axis2纯手动调用网上免费webservice服务的介绍就完事了,较上一节的方式,两种方式各有优缺点,上一节的方式操作复杂点,这节的方式简单点,但是对网络依赖大,所以操作时,一定要在浏览器中运行一下.wsdl的服务地址链接,成功打开后方可用于自己的代码中

在研究axis2访问webservice服务的过程发现一些别的方式,但操作时报出了一些错误,下节将说一下具体的情况

CXF 调用天气预报webservice

CXF 调用天气预报webservice

 网上公布的天气预报wsdl文件为

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

 可是执行wsdl2java命令的时候报一个undefined element declaration ''s:schema''  错误执行不了后来百度发现好像CXF 识别不了 ref 属性

可是我又不能更改WSDL文件格式,所以果断把wsdl文件右键另存为本地文件 然后找到<s:element ref="s:schema" />删除之后文件生成成功

JAVA + WeatherWebService 实现天气预报接口调取

JAVA + WeatherWebService 实现天气预报接口调取

两步完成接口调取

第一步:引入jar包

  1. 在线jar包
  2. 若在线jar包失效,私信我即可。

第二步:创建类实现

    1. 在JAVA项目中创建java类(我的是:WeatherUtil)
    1. 修改类中cityid为你需要展示的地区id,我的是上海的【cityid查询】

    WeatherUtil类代码:

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.SocketTimeoutException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import net.sf.json.JSONObject;
    
    /**
     * java调用中央气象局天气预报接口 
     *
     * @author Administrator
     *
     */
    public class WeatherUtil {
    
        /**
         * 获取一周天气<br> 
         * 方 法 名:getWeekWeatherMap <br> 
         * @param Cityid  城市编码 
         */
        public static List<Map<String, Object>> getWeekWeatherMap(String Cityid)
                throws IOException, NullPointerException {
            // 连接中央气象台的API  
            URL url = new URL("http://m.weather.com.cn/data/" + Cityid + ".html");
            URLConnection connectionData = url.openConnection();
            connectionData.setConnectTimeout(1000);
            // 得到1到6天的天气情况  
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        connectionData.getInputStream(), "UTF-8"));
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = br.readLine()) != null)
                    sb.append(line);
                String datas = sb.toString();
                System.out.println(datas);
                JSONObject jsonData = JSONObject.fromObject(datas);
                JSONObject info = jsonData.getJSONObject("weatherinfo");
                for (int i = 1; i <= 6; i++) {
                    // 得到未来6天的日期  
                    Calendar cal = Calendar.getInstance();
                    cal.add(Calendar.DAY_OF_YEAR, i - 1);
                    Date date = cal.getTime();
                    SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("city", info.getString("city").toString());// 城市  
                    map.put("date_y", sf.format(date));// 日期  
                    map.put("week", getWeek(cal.get(Calendar.DAY_OF_WEEK)));// 星期  
                    map.put("fchh", info.getString("fchh").toString());// 发布时间  
                    map.put("weather", info.getString("weather" + i).toString());// 天气  
                    map.put("temp", info.getString("temp" + i).toString());// 温度  
                    map.put("wind", info.getString("wind" + i).toString());// 风况  
                    map.put("fl", info.getString("fl" + i).toString());// 风速  
                    // map.put("index", info.getString("index").toString());//  
                    // 今天的穿衣指数  
                    // map.put("index_uv", info.getString("index_uv").toString());//  
                    // 紫外指数  
                    // map.put("index_tr", info.getString("index_tr").toString());//  
                    // 旅游指数  
                    // map.put("index_co", info.getString("index_co").toString());//  
                    // 舒适指数  
                    // map.put("index_cl", info.getString("index_cl").toString());//  
                    // 晨练指数  
                    // map.put("index_xc", info.getString("index_xc").toString());//  
                    // 洗车指数  
                    // map.put("index_d", info.getString("index_d").toString());//  
                    // 天气详细穿衣指数  
                    list.add(map);
                }
            } catch (SocketTimeoutException e) {
                System.out.println("连接超时");
            } catch (FileNotFoundException e) {
                System.out.println("加载文件出错");
            }
    
            return list;
    
        }
    
        /**
         *
         * 获取实时天气1<br> 
         * 方 法 名: getTodayWeather <br> 
         *
         * @param Cityid
         *            城市编码 
         */
        public static Map<String, Object> getTodayWeather1(String Cityid)
                throws IOException, NullPointerException {
            // 连接中央气象台的API  
            URL url = new URL("http://www.weather.com.cn/data/sk/" + Cityid
                    + ".html");
            URLConnection connectionData = url.openConnection();
            connectionData.setConnectTimeout(1000);
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        connectionData.getInputStream(), "UTF-8"));
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = br.readLine()) != null)
                    sb.append(line);
                String datas = sb.toString();
                System.out.println(datas);
                JSONObject jsonData = JSONObject.fromObject(datas);
                JSONObject info = jsonData.getJSONObject("weatherinfo");
                map.put("city", info.getString("city").toString());// 城市  
                map.put("temp", info.getString("temp").toString());// 温度  
                map.put("WD", info.getString("WD").toString());// 风向  
                map.put("WS", info.getString("WS").toString());// 风速  
                map.put("SD", info.getString("SD").toString());// 湿度  
                map.put("time", info.getString("time").toString());// 发布时间  
    
            } catch (SocketTimeoutException e) {
                System.out.println("连接超时");
            } catch (FileNotFoundException e) {
                System.out.println("加载文件出错");
            }
    
            return map;
    
        }
    
    
        /**
         *
         * 获取实时天气2<br> 
         * 方 法 名: getTodayWeather <br> 
         *
         * @param Cityid
         *            城市编码 
         */
        public static Map<String, Object> getTodayWeather2(String Cityid)
                throws IOException, NullPointerException {
            // 连接中央气象台的API  
            URL url = new URL("http://www.weather.com.cn/data/cityinfo/" + Cityid
                    + ".html");
            URLConnection connectionData = url.openConnection();
            connectionData.setConnectTimeout(1000);
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        connectionData.getInputStream(), "UTF-8"));
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = br.readLine()) != null)
                    sb.append(line);
                String datas = sb.toString();
                System.out.println(datas);
                JSONObject jsonData = JSONObject.fromObject(datas);
                JSONObject info = jsonData.getJSONObject("weatherinfo");
                map.put("city", info.getString("city").toString());// 城市  
                map.put("temp1", info.getString("temp1").toString());// 最高温度  
                map.put("temp2", info.getString("temp2").toString());// 最低温度  
                map.put("weather", info.getString("weather").toString());//天气  
                map.put("ptime", info.getString("ptime").toString());// 发布时间  
    
            } catch (SocketTimeoutException e) {
                System.out.println("连接超时");
            } catch (FileNotFoundException e) {
                System.out.println("加载文件出错");
            }
    
            return map;
    
        }
    
        private static String getWeek(int iw) {
            String weekStr = "";
            switch (iw) {
                case 1:
                    weekStr = "星期天";
                    break;
                case 2:
                    weekStr = "星期一";
                    break;
                case 3:
                    weekStr = "星期二";
                    break;
                case 4:
                    weekStr = "星期三";
                    break;
                case 5:
                    weekStr = "星期四";
                    break;
                case 6:
                    weekStr = "星期五";
                    break;
                case 7:
                    weekStr = "星期六";
                    break;
                default:
                    break;
            }
            return weekStr;
        }
    
        public static void main(String[] args) {
            try {
                //测试获取实时天气1(包含风况,湿度)  
                Map<String, Object> map = getTodayWeather1("101020100");
                System.out.println(map.get("city") + "\t" + map.get("temp")
                        + "\t" + map.get("WD") + "\t" + map.get("WS")
                        + "\t" + map.get("SD") + "\t" + map.get("time"));
    
                //测试获取实时天气2(包含天气,温度范围)  
                Map<String, Object> map2 = getTodayWeather2("101010100");
                System.out.println(map2.get("city") + "\t" + map2.get("temp1")
                        + "\t" + map2.get("temp2") + "\t" + map2.get("weather")
                        + "\t" + map2.get("ptime"));
    
                //测试获取一周天气  
                List<Map<String, Object>> listData = getWeekWeatherMap("101010100");
                for (int j = 0; j < listData.size(); j++) {
                    Map<String, Object> wMap = listData.get(j);
                    System.out.println(wMap.get("city") + "\t" + wMap.get("date_y")
                            + "\t" + wMap.get("week") + "\t" + wMap.get("weather")
                            + "\t" + wMap.get("temp") + "\t" + wMap.get("wind")
                            + "\t" + wMap.get("fl"));
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }  

    关于读取RSS源的天气预报Web Server实现获取天气预报接口的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ASP.NET使用WebService实现天气预报功能、axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务、CXF 调用天气预报webservice、JAVA + WeatherWebService 实现天气预报接口调取等相关内容,可以在本站寻找。

    本文标签: