`
gui1401
  • 浏览: 49889 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

WebResponse 跨域访问

阅读更多

前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库。当时,想当然,觉得很简单,用js的xmlhttp ,如果根据response 的值是“OK”就执行提交本地数据库。很快写完发过去,让朋友试试,一试发现不行,后来一问,原来是跨域访问,我给忽略了,于是让朋友把asp改成web service,可朋友说程序是合作公司做的,只会asp,不会用web service ,狂晕ing。没办法,只能请出asp.netWebResponse了,很多网站采集程序都是用这个。第一版写完了,倒是可以跨域访问了,不过是乱码,调整有关编码的方式,终于可以了。这个应用虽小可是涉及的知识点不少:
1、xmlhttp 不能跨域提交。
当然XMLHttpRequest还是权宜的解决的方法,可以参考思归写的一篇文章:http://blog.joycode.com/saucer/archive/2006/10/03/84572.aspx

2、webresponse可以进行跨域访问,不过要注意
1)、get和post的区别。
2)、注意Timeout的问题。

这些都是简单的程序,记下来备忘,高手就不必看了。

不废话了,下面是相关的c#代码:


/// <summary>
        
/// 使用Post方法发送数据
        
/// </summary>
        
/// <param name=”pi_strPostURl”>提交地址</param>
        
/// <param name=”pi_strParm”>参数</param>
        
/// <returns></returns>       
        public static string PostResponse(string pi_strPostURl, string pi_strParm)
        {
            
try
            {
                
//编码
                Encoding t_Encoding = Encoding.GetEncoding(“GB2312“); 
        Uri t_Uri 
= new Uri(pi_strPostURl);              
                
byte[] paramBytes = t_Encoding.GetBytes(pi_strParm);
                WebRequest t_WebRequest 
= WebRequest.Create(t_Uri);
        t_WebRequest.Timeout 
= 100000;
                
//设置ContentType
                t_WebRequest.ContentType = “application/x-www-form-urlencoded“;
                
                t_WebRequest.Method 
= EnumMethod.POST.ToString();                //初始化
                using (Stream t_REStream = t_WebRequest.GetRequestStream())
                {
                    
//发送数据
                    requestStream.Write(paramBytes, 0
, paramBytes.Length);
                }
                
                WebResponse t_WebResponse 
=
 t_WebRequest.GetResponse();
                
                
using (StreamReader t_StreamReader = new StreamReader(t_WebResponse .GetResponseStream(), t_Encoding))
                {
                    
return t_StreamReader.ReadToEnd();
                }
            }
            
catch
            {
                
return “ERROR“;
            }
        }
 
public static string GetResponse(string pi_strPostURl, string pi_strParm)
        {
            
try
            {
                
//编码
                Encoding t_Encoding = Encoding.GetEncoding(“GB2312“);               
                Uri t_Uri 
= new Uri(string.Format(“{0}?{1}“, pi_strPostURl, pi_strParm));
                
                WebRequest t_WebRequest 
=
 WebRequest.Create(t_Uri);
               
                t_WebRequest.Timeout 
= 100000;
                t_WebRequest.ContentType 
= “application/x-www-form-urlencoded“;
               
                t_WebRequest.Method 
= EnumMethod.GET.ToString();  
                WebResponse t_WebResponse 
=
 t_WebRequest.GetResponse();
                
                
using (StreamReader t_StreamReader = new StreamReader(t_WebResponse.GetResponseStream(), t_Encoding))
                {
                    
return t_StreamReader.ReadToEnd();
                }
            }
            
catch (Exception e)
            {
                
return e.ToString();
            }
        }
public static string AtionResponse(string pi_Url, EnumMethod pi_Method)
        {
             
string t_strUrlPath=“”;
             
string t_parm = “”;            
             Uri  t_Url 
= new Uri(pi_Url);                
             t_parm
= t_Url.Query;
             
if (parmString.StartsWith(“?“))
                    t_parm 
= t_parm.Remove(01);                
             t_strUrlPath 
= “http://“ + t_Url .Authority + t_Url .AbsolutePath; 
            return GetResponse(t_strUrlPath, t_parm, pi_Method);
        }
 
public enum EnumMethod
        {
            POST,
            GET
        }
 

本文地址:http://www.watch-life.net/aspnet/webresponse-cross-site-visit.html

分享到:
评论

相关推荐

    asp.net中WebResponse 跨域访问实例代码

    本文将通过一个具体的实例,讲解如何使用`WebResponse`来实现跨域访问,以及在此过程中需要注意的关键知识点。 首先,让我们明确一点,JavaScript中的`XMLHttpRequest`对象默认不允许跨域请求,但ASP.NET的`...

    关于webResponse类使用的时候超时问题

    如果目标服务器有并发请求限制,或者对单个IP的访问频率有限制,可能会导致请求被延迟或超时。检查服务器的策略和配置。 7. **代码优化**: 代码中使用了`GetResponse()`方法,该方法会阻塞直到服务器返回响应。...

    js跨域和ajax 跨域问题的实现思路

    这种方法的限制是无法从其他域读取敏感数据,但如果是公共数据且目标网站允许跨域访问,可以使用此方法。 2. 服务器代理跨域方法 这种方法涉及到在服务器端进行中转,先从服务器端向其他域发出请求,获取数据后,再...

    获取网页代码

    "WebResponse"是.NET Framework中的一个关键类,它用于处理从Web服务器接收的响应数据。让我们深入探讨这个主题。 首先,我们需要理解HTTP(超文本传输协议)。它是互联网上应用最广泛的一种网络协议,用于从万维网...

    阿里巴巴小爬虫源代码(c# 搜索 资源 代码)

    C#作为.NET框架的主要编程语言,使用.NET可以方便地访问各种系统资源,同时享受跨平台(通过.NET Core)的便利。 压缩包中的“InfoCutter”可能是指一个具体的源代码文件或者模块,它可能是爬虫程序的一部分,负责...

    使用HttpUnit进行集成测试使用HttpUnit进行集成测试

    使用HttpUnit进行集成测试使用HttpUnit进行集成测试使用HttpUnit进行集成测试使用HttpUnit进行集成测试

    JS跨域总结

    using (WebResponse response = wr.GetResponse()) { Stream responseStream = response.GetResponseStream(); byte[] buffer = new byte[BUFFER_SIZE]; int bytesRead; StringBuilder sb = new StringBuilder...

    C#抓取网页内容.pdf

    在本例中,我们通过`WebRequest.Create(url)`静态方法来实例化一个用于HTTP协议的`HttpWebRequest`对象,其中`url`参数是我们要访问的网页URL。 2. **WebResponse**: 这是`WebRequest`的抽象子类,用于接收来自...

    使用net访问Intenet

    在现代的计算机网络环境中,访问Internet是日常工作中不可或缺的一部分。"使用net访问Internet"这个主题主要涵盖的是如何利用.NET框架进行网络通信,实现对互联网资源的访问和操作。本文将深入探讨.NET框架在网络...

    下载bing背景图片,网络下载示例

    本示例将深入探讨如何利用.NET框架中的WebRequest和WebResponse类来实现一个简单的网络下载任务,即下载Bing每日背景图片。Bing背景图片以其高质量的图像和多样化的主题而闻名,是许多用户桌面壁纸的首选。 首先,...

    C#网络编程全面教程(c#爬虫)

    WebRequest和WebResponse类是更底层的网络访问接口,提供更强大的功能和灵活性: (1) WebRequest类与WebResponse类简介:它们是.NET Framework的基础网络请求和响应抽象类,支持多种网络协议,如HTTP、FTP和Gopher...

    C#获取html页面源码

    - **`UserAgent`**: 设置请求头中的`User-Agent`字段,模拟浏览器访问。 ##### 3. 处理HTTP响应 发送请求后,我们通过`GetResponse()`方法获取响应对象`HttpWebResponse`,进而可以读取响应内容。 **示例代码分析...

    HttpUnit 小结

    9. **代理配置**:如果测试环境需要通过代理服务器访问网络,可以通过以下方式配置代理。 ```java System.getProperties().put("proxySet", "true"); System.getProperties().put("proxyHost", "proxy.example....

    sliverlight 上传文件(webservice)

    由于Silverlight有跨域限制,你需要在Web服务的Web.config中添加允许跨域访问的配置: ```xml *" /&gt; ``` ### 6. 错误处理与优化 在实际开发中,还需要考虑错误处理,如网络异常、文件...

    HttpWebRequest详解

    在.NET框架中,`System.Net`命名空间中最关键的两个类是`WebRequest`和`WebResponse`。这两个类都是抽象类,提供了创建网络请求和处理网络响应的基础。通过以下步骤可以演示如何使用这些类来获取资源: 1. **创建...

    Asp.net网络通信视频教程

    DNS WebClient WebRequest WebResponse WebProxy TCP通信

    windwos phone 三种异步编程

    在Windows Phone平台上,为了确保应用程序的流畅性和响应性,官方推荐使用异步编程模式来处理那些可能会导致用户界面(UI)冻结的操作,如网络请求、数据库访问等。本文将详细介绍Windows Phone平台上的三种主要异步...

    C#中HttpWebRequest、WebClient、HttpClient的使用详解

    HttpWebRequest: ...使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 timeouts, cookies, headers, protocols。...HttpWebRquest更为底层一些,能够对整个访问过程有个直观的认识,但同时也更加复

    抓取.docx抓取.docx

    WebResponse _WebResponse = _WebRequest.GetResponse(); StreamReader _ResponseStream = new StreamReader(_WebResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312")); _StrResponse = _...

Global site tag (gtag.js) - Google Analytics