免费天气插件asp版本

天气信息来源:中国天气网【weather.com.cn】
根据QQ[http://fw.qq.com:80/ipaddress]得到ip地址和所在城市信息,
然后调用weather.com.cn网站的xml得到城市代码,就可以得到JSON格式的天气信息
setWeather函数可以自行修改生成您想要的天气信息格式

效果如下:
[img]http://dl.iteye.com/upload/attachment/193782/7ebabc5e-929f-36e4-bbd1-c76d32e38b36.png[/img]

Weather.asp

<%codepage=936%>
<%
'***********************************************************
' 文件名: 免费天气插件asp版本,仅适用于中国用户
' 版本: mmWeather1.0
' 作者: 走过四季
' 电子邮件: maomaoysq@sohu.com
' 日期: 2010年01月14日
' 功能: 根据用户的ip地址自动获取所在城市的天气信息
' 声明:
' 本代码可以自由使用,但请保留此版权声明信息
' 如果您对本代码进行修改增强,
' 请发送一份给俺。
'**********************************************************

dim cityid,city1,city2,tmpHtml,tmpArr,tLevel,weaXML,weaHTML
tLevel = 0
weaXML = "http://service.weather.com.cn/plugin/"
weaHTML = "http://m.weather.com.cn/data/"
cityid = Trim(Request.Cookies("wea_cityid"))

if cityid = "" then
tmpHtml = GetUrlBody("http://fw.qq.com:80/ipaddress","gb2312")
tmpHtml = BytesToBstr(tmpHtml,"gb2312")
if tmpHtml = "" then
Response.Write("Error:Can't get ip address from qq.com.")
end if
tmpArr = Split(tmpHtml,",")
Response.Cookies("wea_cityip") = tmpArr(0)
city1 = tmpArr(2)
city2 = tmpArr(3)
city1 = Replace(city1,"省","")
city1 = Replace(city1,"市","")
city1 = Replace(city1,"""","")
city2 = Replace(city2,");","")

if Trim(city2) = "" then
city2 = city1
else
city2 = Replace(city2,"市","")
city2 = Replace(city2,"自治区","")
end if
city2 = Replace(city2,"""","")
'call getCityCode(city2)
if cityid = "" then
call getLocalCity("data/city.xml",0)
end if
else
call getWeather(cityid)
end if

function getLocalCity(ByVal tUrl,ByVal tLevel)
dim iPos,iPos1,cid,cArr
tmpHtml = GetUrlBody(weaXML & tUrl,"")

iPos = InStr(tmpHtml,city1)
iPos1 = InStr(tmpHtml,city2)
if tLevel<3 then
if iPos>0 then
tmpHtml = Left(tmpHtml,iPos-1)
iPos = InStrRev(tmpHtml,",")
tmpHtml = Right(tmpHtml,len(tmpHtml)-iPos)
cid = Replace(tmpHtml,"|",""):
elseif iPos1>0 then
tmpHtml = Left(tmpHtml,iPos1-1)
iPos = InStrRev(tmpHtml,",")
tmpHtml = Right(tmpHtml,len(tmpHtml)-iPos)
cid = Replace(tmpHtml,"|",""):
end if
call getLocalCity("data/city" & cid & ".xml",tLevel+1)
else
cid = Split(tmpHtml,"|")(1)
call getWeather(cid)
end if
end function

function getWeather(ByVal cid)
Response.Cookies("wea_cityid") = cid
tmpHtml = GetUrlBody(weaHTML & cid & ".html","")
if tmpHtml="" then
Response.Write("Error:Nothing is from "&weaHTML & cid & ".html")
else
Response.Write("<script language=javascript>"& vbCrLf &"function window.onload(){var oJson = "& tmpHtml & vbCrLf)
Response.Write("setWeather(oJson);}"& vbCrLf &"</script>")
end if
end function

Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

Public Function GetUrlBody(ByVal URL,ByVal CharSet)
On Error Resume Next
Set Http = Server.CreateObject("MICROSOFT.XMLHTTP")
Http.Open "GET", URL, False
Http.Send
If Http.Readystate = 4 Then
If Http.Status = 200 Then
if CharSet="gb2312" then
GetUrlBody = Http.responseBody
else
GetUrlBody = Http.responseText
end if
End If
End If
End Function

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>中国天气网-天气预报</title>
</head>
<body>
<div class="Weather">
<span id="city"></span> <span id="temp1"></span> <span id="wd1"></span>
</div>
</body>
</html>
<script language=javascript>
function setWeather(objJson)
{
var imgHtml = "";
var cityname = objJson.weatherinfo.city; //上海
var id = objJson.weatherinfo.cityid; //101020100
var cityinfo1 = objJson.weatherinfo.weather1; //晴转多云
var wd1 = objJson.weatherinfo.wind1; //北风3-4级
var fl1 = objJson.weatherinfo.fl1; //3-4级
var temp1 = objJson.weatherinfo.temp1; //4℃~-1℃

//注释里面为更详细的信息,您可以根据自己需要使用
/*var cityinfo2=objJson.weatherinfo.weather2;
var wd2=objJson.weatherinfo.wind2;
var fl2=objJson.weatherinfo.fl2;
var temp2=objJson.weatherinfo.temp2;
var img1=objJson.weatherinfo.img1;
var img2=objJson.weatherinfo.img2;
var img3=objJson.weatherinfo.img3;
var img4=objJson.weatherinfo.img4;
var index=objJson.weatherinfo.index;
var index_d=objJson.weatherinfo.index_d;
var index_xc=objJson.weatherinfo.index_xc;
var index_uv=objJson.weatherinfo.index_uv;
var date=objJson.weatherinfo.date;
var date_y=objJson.weatherinfo.date_y;
var imgtitle1=objJson.weatherinfo.img_title1;
var imgtitle2=objJson.weatherinfo.img_title2;
var imgsingle=objJson.weatherinfo.img_single;
var imgtitlesingle=objJson.weatherinfo.img_title_single;
*/

document.all.city.innerHTML = cityname
document.all.temp1.innerHTML = cityinfo1
document.all.wd1.innerHTML = wd1 + fl1
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值