asp.net的ajax服务器端代理

本文介绍了如何使用不同编程语言解决浏览器跨域问题,以抓取网易网站上的天气预报XML数据。提供了VBScript和C#两种实现方式,并讨论了解决方案的复杂性和潜在问题。
在网易上去抓天气预报,查看 www.163.com首页,天气预报以xml格式存在在这个位置:
http://www.163.com/inc/weatherxml/56294.xml
最后的一串数字是省份代码。

参照网易的代码改成自己的(其实就是copy了),在ie6正常,ie7没权限,firefox1.5没权限……
上网查了是跨域问题,解决方法有说“服务器代理”,没找到代码,找到一个asp的:
 1 None.gif
 2 None.gif < %@LANGUAGE = " VBSCRIPT "  CODEPAGE = " 936 " % >
 3 None.gif < %
 4 None.gif Function  send_request(url)
 5 None.gif Set  Retrieval  =   CreateObject ( " Microsoft.XMLHTTP " )
 6 None.gif With  Retrieval
 7 None.gif  .Open  " Get " , url,  False "" ""
 8 None.gif  .Send
 9 None.gif  send_request  =  .ResponseBody
10 None.gif End   With
11 None.gifResponse.ContentType = " text/xml "
12 None.gif Set  Retrieval  =   Nothing
13 None.gif End Function
14 None.gif 
15 None.gifurl = Request( " url " )
16 None.gifResponse.BinaryWrite send_request(url)
17 None.gifResponse.Flush
18 None.gif% >
19 None.gif
 简洁得可怕啊。

我参照以前的代码,没用xmlhttp,这样写:
 1  <% @ OutputCache Duration = " 600 "  VaryByParam = " * "   %>
 2  < script language = " C# "  runat = " server " >
 3  override   protected   void  OnInit(EventArgs e)
 4  {
 5       string  strUrl, strXml;
 6      strUrl  =  Server.UrlDecode(Request.QueryString[ " url " ]);
 7      strXml  =   this .GetUrlToHtml(strUrl);
 8 
 9      Response.ContentType  =   " text/xml " ;
10      Response.BinaryWrite(System.Text.Encoding.Default.GetBytes(strXml));
11      Response.Flush();
12 
13  }
14 
15  public   string  GetUrlToHtml( string  url)
16  {
17       if  (url == ""   ||  url == null return   "" ;
18 
19       try
20      {
21          Uri uri  =   new  Uri(url);
22          System.Net.WebRequest wReq  =  System.Net.WebRequest.CreateDefault(uri);
23          System.Net.WebResponse wResp  = wReq.GetResponse();
24          System.IO.Stream respStream   =  wResp.GetResponseStream();
25          System.IO.StreamReader reader  =   new  System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding( " gb2312 " ));
26           string  strHtml  =  reader.ReadToEnd();
27          reader.Close();
28           return  strHtml;
29      }
30       catch
31      {
32           return   "" ;
33      }
34  }
35  </ script >
觉得复杂了。而且那个Encoding像个定时炸弹。。。

测试通过,好晚了,就不再改了。


半拉子工程就是这样做的。改天再修改。

转载于:https://www.cnblogs.com/nonlyli/archive/2007/06/30/801605.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值