java web service实现天气预报功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web service实现天气预报功能相关的知识,希望对你有一定的参考价值。

请问在java web service(有XFile 支持) 中要实现天气预报功能,怎么做?

前台js界面代码:

//省份
        function LoadProvince() 
            $.ajax(
                type: "POST",
                url: "ashx/weatherHandler.ashx",
                data: "option=province",
                success: function (result) 
                    $(".sel-province option").remove();
                    var arry = result.split(\'|\');
                    var obj = null;
                    for (var i = 0; i < arry.length; i++) 
                        if (arry[i] != null && arry[i] != "") 
                            obj = arry[i].split(\',\');
                            $(".sel-province").append("<option value=\'" + obj[1] + "\'>" + obj[0] + "</option>");
                        
                    
                    $(".sel-province").find("option[text=\'北京\']").attr("selected", "selected");
                ,
                error: function (errorMsg) 
                    $(".result-table tr").remove();
                    $(".result-table").append("<tr><td>省份请求出现错误,请您稍后重试。。。</td></tr>");
                
            );
        
        //城市
        function LoadCity(provinceid)    
            $.ajax(
                type: "POST",
                url: "ashx/weatherHandler.ashx",
                data: "provinceid=" + provinceid + "&option=city",
                success: function (result) 
                    $(".sel-city option").remove();
                    var arry = result.split(\'|\');
                    var obj = null;
                    for (var i = 0; i < arry.length; i++) 
                        if (arry[i] != null && arry[i] != "") 
                            obj = arry[i].split(\',\');
                            $(".sel-city").append("<option value=\'" + obj[1] + "\'>" + obj[0] + "</option>");
                        
                    
                ,
                error: function (errorMsg) 
                    $(".result-table tr").remove();
                    $(".result-table").append("<tr><td>城市请求出现错误,请您稍后重试。。。</td></tr>");
                
            );
        
        //加载天气
        function GetWeather(cityid) 
            $.ajax(
                type: "POST",
                url: "ashx/weatherHandler.ashx",
                data: "cityid=" + cityid + "&option=weather",
                success: function (result) 
                    $(".result-table tr").remove();
                    var arry = result.split(\'|\');
                    var obj = null;
                    for (var i = 0; i < arry.length; i++) 
                        if (arry[i] != null && arry[i] != "") 
                            if (arry[i].indexOf(".gif") > 0) 
                                $(".result-table").append("<tr><td><image src=\'images/" + arry[i] + "\'/></td></tr>");
                            
                            else 
                                $(".result-table").append("<tr><td>" + arry[i] + "</td></tr>");
                            
                        
                    
                ,
                error: function (errorMsg) 
                    $(".result-table tr").remove();
                    $(".result-table").append("<tr><td>天气数据请求出现错误,请您稍后重试。。。</td></tr>");
                
            );
        

html代码:

<body>
    <form id="form1" runat="server">
    <div class="head-div">
        <table>
            <tr>
                <td>
                    <select class="sel-province sel">
                    </select>
                </td>
                <td>
                    <select class="sel-city sel">
                    </select>
                </td>
                <td>
                    <input type="button" class="btn-search" value="查询" />
                </td>
            </tr>
        </table>
    </div>
    <div class="result-div">
        <table class="result-table">
        </table>
    </div>
    </form>
</body>

由于js不支持跨域,直接ajax+ashx一般处理程序(在里面调用天气接口)。一般处理程序代码如下:

using System.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
 
namespace WeatherTest.ashx

    /// <summary>
    /// weatherHandler 的摘要说明
    /// </summary>
    public class weatherHandler : IHttpHandler
    
        WeatherWsClient.WeatherWSSoapClient client = new WeatherWsClient.WeatherWSSoapClient();
        public void ProcessRequest(HttpContext context)
        
            context.Response.ContentType = "text/plain";
            string[] result = null;
            string option = context.Request.Form["option"];
            switch (option)
            
                case "province":
                    result = GetProvinces();
                    break;
                case "city":
                    result = GetCitys(context.Request.Form["provinceid"]);
                    break;
                case "weather":
                    result = GetWeather(context.Request.Form["cityid"], null);
                    break;
            
            string str = ConvertToString(result, option);
 
            context.Response.Write(str);
        
        /// <summary>
        /// 数组转字符串
        /// </summary>
        /// <param name="result"></param>
        /// <param name="option"></param>
        /// <returns></returns>
        private string ConvertToString(string[] result, string option)
        
            StringBuilder sb = new StringBuilder();
            foreach (string item in result)
            
                sb.Append(item+"|");
            
            return sb.ToString();
        
 
        /// <summary>
        /// 省份
        /// </summary>
        /// <returns></returns>
        private string[] GetProvinces()
        
            return client.getRegionProvince();
        
        /// <summary>
        /// 城市
        /// </summary>
        /// <param name="provinceid"></param>
        /// <returns></returns>
        private string[] GetCitys(string provinceid)
        
            return client.getSupportCityString(provinceid);
        
        /// <summary>
        /// 天气数据
        /// </summary>
        /// <param name="cityid"></param>
        /// <param name="userid"></param>
        /// <returns></returns>
        private string[] GetWeather(string cityid, string userid)
        
            return client.getWeather(cityid, userid);
        
 
        public bool IsReusable
        
            get
            
                return false;
            
        
    
参考技术A 引用一个天气预报页就完事了不用自己写 我给你个网站你就知道了 http://www.265.com/weather/db.htm#54337天气预报的免费代码在页面最下面

如何编写web service 类似天气预报,我只发布接口,别人可以使用。

刚刚接触,有没有这方面的入门资料。

新建一个 webservice网站, 自定义一个方法, 调用天气api 返回 等等... 网站有例子,看看就会了,发布到iis 上, 然后访问iis 返回的地址 发送给别人,别人引用一下发过来的地址就可以了 参考技术A 有啥,你写个接口,返回xml信息,里面包括天气状况温度等信息就行了

以上是关于java web service实现天气预报功能的主要内容,如果未能解决你的问题,请参考以下文章

什么是Web Service(Web服务)?

Web services 有两种类型的应用

如何用java web 调用天气接口

Web Service学习之一:Web Service原理

java使用WebService实现调用天气预报功能超详细

lr-web service协议