发布集成“IP地址查询”和“天气预报”的WebService项目,Beta1

        今天很高兴得对外发布了我新的基于Asp .Net 的WebService项目:TheoService(嗯,暂时就取这个名字吧)。有了这个WebService项目,今后就可以更好得分享本站上诸如IP地址查询、天气预报这样比较实用的功能,同时也让我自己的这些零零碎碎的小项目有了一个统一的调用接口,也方便了今后的管理。

        好了,废话就先说到这里,还是先来公布这个WebService的地址吧。该项目的地址是http://www.theosoft.cn/webservice/theoservice.asmx。点击这个地址,可以看到该项目暂时对外提供5个函数接口。

点击右边的 Service Description 可以查看该WebService的WSDL文档描述。点击这些函数名,你也可以查看这些函数详细的参数定义。我先在这里做个简单的介绍吧。

GetAddressstring GetAddress(string myip);

                           输入参数为IPv4地址,返回值为该IP所属的地区

GetWeatherByCityWeather GetWeatherByCity(string CityName);

                           输入参数为城市名,返回值为Service所定义的Weather类型,包含天气的所有信息

GetWeatherByIPWeather GetWeatherByIP(string MyIP);

                           输入参数为IPv4地址,返回值为该IP所属的地区(城市)的天气

GetWeatherImgByCitybyte[] GetWeatherImgByCity(string CityName, string backColor)

                           输入参数为城市名和图片背景色,返回值为byte[] 类型的图片数据流

GetWeatherImgByIPbyte[] GetWeatherImgByIP(string MyIP, string backColor);

                           输入参数为IPv4地址和图片背景色,返回值为byte[] 类型的图片数据流

注:图片背景色是html里用的6位的RGB编码,详见示例

        好了,函数就先介绍到这里,下面举个使用该WebService的简单的范例。

就以本站的天气预报功能来说吧。大家肯定都注意到了本站右上角会以一张图片的形式显示您所在地区的天气情况。就是这个。这个天气预报会根据访问者的IP自动识别出其所在的城市,并给出该城市的气象数据。那么究竟该怎样实现这一功能呢?答案其实很简单。首先当然是要在你的网站里添加我的这个WebService的引用。

右键点击你的项目,选择“添加Web引用”

然后在"URL"里填上WebService的地址,再启个合适的引用名(这里假定Theosoft.Service)

点击"添加引用"后,就完成了。然后,再简单的写一段代码,获得用户的IP地址,并将网页以图片形式输出,这个功能就完成了。

using System;
using Theosoft.Service;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TheoService TS = new TheoService();
        string bgColor = "#" + Request.QueryString["color"];
        string myip = Request.UserHostAddress;
        byte[] bmp = TS.GetWeatherImgByIP(myip, bgColor);
        Response.ClearContent();
        Response.ContentType = "image/png";
        Response.BinaryWrite(bmp);
    }
}



[本日志由 theosoft 于 2009-05-18 10:00 AM 编辑]
文章来自: Theosoft.Blog
引用通告地址: 查看引用地址
Tags: WebService 天气 天气预报 ip IP查询
评论: 2 | 引用: 0 | 查看次数: 2512
  • 1
我这个小网站,免费为大家提供点服务也不容易。像你这样高强度的抓取数据,我可吃不消。
下面是系统日志里记录的内容,别的我也不多说了。
[2008-11-7 20:14:13] Call GetWeatherByIP, 来自 上海市 漕河泾网通IDC机房(210.51.21.1)
[2008-11-7 20:14:13] 拒绝服务!并将目标载入黑名单!
kolman [2008-11-06 07:22 PM | 210.77.8.143]
这个服务是有bug吧,多请求几次就不能用了?
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码:
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 开启