仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 495|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之ASP.NET:依据IP猎取外地天色预告的完成...

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:48:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。asp.net|天色预告  会见www.ckuyun.com,首页的栏目里有外地的天色预告。能够料想,这里的天色预告,应当是依据来访者的ip判别其地点地给出外地的天色情形。问了一些伴侣,也证明了这一点。项目里也必要天色预告这个小栏目,同事做过一个(从其他站点抓取的),不外完成不了依据IP显现外地的天色情形,必要用户自行选择,并且抓取的站点属于小站….其牢靠性值得嫌疑。。以是就萌发了抓取网易的天色预告的设法。。。对页面举行剖析。。发明显现天色预告的地区是一个IFrame,IFrame里嵌进了以下链接http://news.163.com/util/position1.html,对这个地点会见间接跳转到别的一个链接http://news.163.com/weather/news/qx1/56294.html,此链接显现了天色情形,如图:



  由此能够推想http://news.163.com/util/position1.html,是在依据来访者的IP判别所属地区,然后前往一个该区域所对应的区位码,如:56294代表成都。怎样让网易来帮我们的站点来访者判别所属地区,并给出天色情形,并显现在本人的站点页面上呢?还得持续剖析。。由于http://news.163.com/util/position1.html,此链接一会见就转向到天色情形的链接,而没法检察源码。便料想。。此页面一定有些器材。。无法之下。。WebRequest一下,呈现了以下代码:
<P>1<scriptlanguage="Javascript">
2varcity=newArray("安徽","黑龙江","山东","北京","湖北","山西","福建","湖南","陕西","甘肃","吉林","上海","广东","江苏","四川","广西","江西","天津","贵州","辽宁","西躲","海南","内蒙古","新疆","河北","宁夏","云南","河南","青海","浙江","重庆");
3varweaths=newArray(58321,50953,54823,54511,57494,53772,59134,57679,57036,52889,54172,58367,59287,58238,56294,59431,58606,54527,57816,54342,55591,52856,53463,51463,53698,53614,56778,57083,52866,58457,57516);
4
5functiongetCookieVal(offset){
6varendstr=document.cookie.indexOf(";",offset);
7if(endstr==-1)
8endstr=document.cookie.length;
9returnunescape(document.cookie.substring(offset,endstr));
10}
11functionGetCookie(name){
12vararg=name+"=";
13varalen=arg.length;
14varclen=document.cookie.length;
15vari=0;
16while(i<clen){
17varj=i+alen;
18if(document.cookie.substring(i,j)==arg)
19returngetCookieVal(j);
20i=document.cookie.indexOf("",i)+1;
21if(i==0)
22break;
23}
24return"";
25}
26functionSetCookie(cookieName,cookieValue,nDays){
27vartoday=newDate();
28varexpire=newDate();
29if(nDays==null||nDays==0)nDays=1;
30expire.setTime(today.getTime()+3600000*24*nDays);
31document.cookie=cookieName+"="+escape(cookieValue)+";path=/;domain=.163.com;expires="+expire.toGMTString();
32}
33functiongetCityWeatherID(cityname){
34for(i=0;i<city.length;i++){
35if(city==cityname){
36returnweaths;
37}
38}
39return"54511";
40}
41
42varNTES_WeatherAddr=GetCookie("NTES_WeatherAddr");
43if(!NTES_WeatherAddr){
44varloc=GetCookie("theaddr");
45if(!loc){
46document.write("<scripttype=text/javascriptsrc=http://202.108.39.152/ipquery><"+"/script>");
47}
48}
49</script>
50<script>
51if(!NTES_WeatherAddr){
52NTES_WeatherAddr=getCityWeatherID(loc);
53}
54window.location.href="http://news.163.com/weather/news/qx1/"+NTES_WeatherAddr+".html";
55</script>
56
57
  下面的这段js完成了对来访者IP判别并给出了天色预告了局的链接。Js里的此链接:http://202.108.39.152/ipquery,起到的是判别用户地点地的感化,前往的是来访者地点地省分。剖析到此,想要的了局差未几就出来了…
  在客户端挪用这段js取得天色预告了局的链接地点,然后交给服务端来处置。(为何要交给背景处置,而不是间接显现呢?)由于间接得出的链接页面上,有过剩的链接,还使用了款式(如图一),方便为本人所用,以是得处置失落。客户端挪用服务真个办法良多,最后利用了Ajax框架Anthem,完成了事后,以为有点杀鸡用牛刀的感到。。无聊之余。。就又用CallBack完成了一次。。感到恰如其分。。厥后又发明。。__doPostBack也能够完成客户端挪用服务端办法。。看来完成这么一个功效还真是复杂。。。
  好了到此就完成了,本人想要的了局:(感到有点遗憾的是只给出了省会乡村的天色预告)



  前台页面代码Defaul.aspx:

<P>1<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"ResponseEncoding="GB2312"%>
2<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<htmlxmlns="http://www.w3.org/1999/xhtml">
4<headrunat="server">
5<title></title>
6<script>
7varcity=newArray("安徽","黑龙江","山东","北京","湖北","山西","福建","湖南","陕西","甘肃","吉林","上海","广东","江苏","四川","广西","江西","天津","贵州","辽宁","西躲","海南","内蒙古","新疆","河北","宁夏","云南","河南","青海","浙江","重庆");
8varweaths=newArray(58321,50953,54823,54511,57494,53772,59134,57679,57036,52889,54172,58367,59287,58238,56294,59431,58606,54527,57816,54342,55591,52856,53463,51463,53698,53614,56778,57083,52866,58457,57516);
9
10varNTES_WeatherAddr=GetCookie("NTES_WeatherAddr");
11if(!NTES_WeatherAddr){
12varloc=GetCookie("theaddr");
13if(!loc){
14document.write("<scripttype=text/javascriptsrc=http://202.108.39.152/ipquery><"+"/script>");
15}
16}
17
18functiongetCookieVal(offset){
19varendstr=document.cookie.indexOf(";",offset);
20if(endstr==-1)
21endstr=document.cookie.length;
22returnunescape(document.cookie.substring(offset,endstr));
23}
24
25functionGetCookie(name){
26vararg=name+"=";
27varalen=arg.length;
28varclen=document.cookie.length;
29vari=0;
30while(i<clen){
31varj=i+alen;
32if(document.cookie.substring(i,j)==arg)
33returngetCookieVal(j);
34i=document.cookie.indexOf("",i)+1;
35if(i==0)
36break;
37}
38return"";
39}
40
41functionSetCookie(cookieName,cookieValue,nDays){
42vartoday=newDate();
43varexpire=newDate();
44if(nDays==null||nDays==0)nDays=1;
45expire.setTime(today.getTime()+3600000*24*nDays);
46document.cookie=cookieName+"="+escape(cookieValue)+";path=/;domain=.163.com;expires="+expire.toGMTString();
47}
48
49//依据Ip服务器前往的省分称号猎取对应的编号
50functiongetCityWeatherID(cityname){
51for(i=0;i<city.length;i++){
52if(city==cityname){
53returnweaths;
54}
55}
56return"57816";
57}
58
59//猎取地点地天色预告了局的链接
60functiongetWeatherUrl(){
61if(!NTES_WeatherAddr){
62NTES_WeatherAddr=getCityWeatherID(loc);
63
64}
65varaddr="http://news.163.com/weather/news/qx1/"+NTES_WeatherAddr+".html";
66document.form1.Text1.value=addr;
67}
68
69//客户端挪用服务端办法完成对天色预告了局链接的页面内容举行剖析,Anthem完成体例
70functionshowWeatherByAnthem(){
71Anthem_InvokePageMethod("ShowWeatherByAnthem",[],getServerResult);
72}
73
74functiongetServerResult(result){
75document.getElementById("result").innerHTML=result.value;
76}
77
78//客户端挪用服务端办法完成对天色预告了局链接的页面内容举行剖析,_doPostBack完成体例
79functionshowWeatherBylink()
80{
81__doPostBack(LinkButton1,);
82}
83
84//客户端挪用服务端办法完成对天色预告了局链接的页面内容举行剖析,CallBack完成体例
85functionshowWeatherByCallBack()
86{
87varcontext=document.getElementById("result");
88varweatherUrl=document.getElementById("Text1");
89vararg="ShowWeatherByCall|"+weatherUrl.value;
90<%=ClientScript.GetCallbackEventReference(this,"arg","outPutResult","context")%>;
91}
92functionoutPutResult(result)
93{
94document.getElementById("result").innerHTML=result;
95
96}
97</script>
98</head>
99<body>
100<formid="form1"runat="server">
101<spanid="result"></span>
102<inputid="Text1"type="hidden"runat="server"/>
103</form>
104</body>
105</html>
106
  背景代码Default.cs:
<P>1usingSystem;
2usingSystem.Data;
3usingSystem.Configuration;
4usingSystem.Web;
5usingSystem.Web.Security;
6usingSystem.Web.UI;
7usingSystem.Web.UI.WebControls;
8usingSystem.IO;
9usingSystem.Net;
10usingAnthem;
11
12publicpartialclass_Default:System.Web.UI.Page,ICallbackEventHandler
13{
14protectedvoidPage_Load(objectsender,EventArgse)
15{
16Anthem.Manager.Register(this);
17
18}
19
20回调的流动格局#region回调的流动格局
21publicstringstr_content;
22
23publicvoidRaiseCallbackEvent(stringthe_string)
24{
25str_content=the_string;
26}
27
28/**////<summary>
29///回调,剖析客户真个参数
30///</summary>
31///<returns></returns>
32publicstringGetCallbackResult()
33{
34
35string[]parts=str_content.Split(|);
36object[]theArgList=newobject[parts.Length-1];
37for(intint_index=1;int_index<parts.Length;int_index++)
38theArgList[int_index-1]=parts[int_index];
39return(string)GetType().GetMethod(parts[0]).Invoke(this,theArgList);
40}
41#endregion
42
43剖析url的页面内容的办法体#region剖析url的页面内容的办法体
44/**////<summary>
45///Anthem体例,剖析猎取的url的页面内容
46///</summary>
47///<paramname="url">url</param>
48///<returns>剖析了局</returns>
49[Anthem.Method]
50publicstringShowWeatherByAnthem()
51{
52
53WebRequestrequest=WebRequest.Create(Text1.Value);
54request.Credentials=CredentialCache.DefaultCredentials;
55HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();
56StreamdataStream=response.GetResponseStream();
57StreamReaderreader=newStreamReader(dataStream,System.Text.Encoding.Default);
58stringstr=reader.ReadToEnd();
59returnstr.Substring(220);
60
61}
62//<summary>
63//回调体例,剖析猎取的url的页面内容
64//</summary>
65//<paramname="url"></param>
66//<returns></returns>
67publicstringShowWeatherByCall(stringurl)
68{
69WebRequestrequest=WebRequest.Create(url);
70request.Credentials=CredentialCache.DefaultCredentials;
71HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();
72StreamdataStream=response.GetResponseStream();
73StreamReaderreader=newStreamReader(dataStream,System.Text.Encoding.Default);
74stringstr=reader.ReadToEnd();
75returnstr.Substring(220);
76
77}
78#endregion
79}
80归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!
老尸 该用户已被删除
沙发
发表于 2015-1-20 05:01:09 | 只看该作者
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-25 16:26:30 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
飘灵儿 该用户已被删除
地板
发表于 2015-2-3 09:56:55 来自手机 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-8 20:06:16 | 只看该作者
那么,ASP.Net有哪些改进呢?
小女巫 该用户已被删除
6#
发表于 2015-2-26 03:11:48 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
谁可相欹 该用户已被删除
7#
发表于 2015-3-8 11:37:25 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
若天明 该用户已被删除
8#
发表于 2015-3-15 22:23:07 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
再现理想 该用户已被删除
9#
发表于 2015-3-22 17:07:18 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-18 19:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表