论坛首页 Web前端技术论坛

免费天气插件asp版本

浏览 4650 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-14   最后修改:2010-01-14

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

效果如下:


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>&nbsp;<span id="temp1"></span>&nbsp;<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>
  • 大小: 9.9 KB
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics