后台请求数据的几个实例(含获取数据的压缩方式的处理)

                string url = "http://gps.cn/api/";
                string param = HttpContext.Current.Request.Url.Query;
                url = url + param;
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                //request.Method = "GET";
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.CookieContainer = new CookieContainer();
                //request.CookieContainer.Add(new Cookie("ASP.NET_SessionId", "bqf4jp55tspvuy55ayo3gb45", "", "gps.zto.cn"));
                request.CookieContainer.Add(new Cookie("ASP.NET_SessionId", ASPNET_SessionValue, "", "gps.cn"));
                request.CookieContainer.Add(new Cookie("Hm_lvt_d796fdb8c57000115377e0cc55ab56f0", "1414852427", "", "gps.cn"));
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                request.Connection = "KeepAlive";
                request.Headers["Accept-Encoding"] = "gzip, deflate";
                request.Headers["Accept-Language"] = "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3";
                request.Host = "gps.zto.cn";
                request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
                //System.Net.WebProxy proxy = new WebProxy("8.7.16.16", 80);
                //request.Proxy = proxy;
                //获取post来的数据再发送
                byte[] data = Request.BinaryRead(Request.TotalBytes);
                request.ContentLength = data.Length;
                Stream newStream = request.GetRequestStream();
                //string source = Encoding.UTF8.GetString(input);
                // 发送数据
                newStream.Write(data, 0, data.Length);
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream responseStream = null;
                if ("gzip".Equals(response.ContentEncoding))
                {
                    responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                }
                else if ("deflate".Equals(response.ContentEncoding))
                {
                    responseStream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                }
                else
                {
                    responseStream = response.GetResponseStream();
                }
                if (responseStream != null)
                {
                    result = new StreamReader(responseStream, Encoding.GetEncoding(response.CharacterSet)).ReadToEnd().ToString();
                }
            string url = "http://gps.cn/map";
            string param = HttpContext.Current.Request.Url.Query;
            url = url + param;
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            request.CookieContainer = new CookieContainer();
            //request.CookieContainer.Add(new Cookie("ASP.NET_SessionId", "bqf4jp55tspvuy55ayo3gb45", "", "gps.zto.cn"));
            request.CookieContainer.Add(new Cookie("ASP.NET_SessionId", ASPNET_SessionValue, "", "gps.cn"));
            request.CookieContainer.Add(new Cookie("Hm_lvt_d796fdb8c57000115377e0cc55ab56f0", "1414852427", "", "gps.cn"));
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Connection = "KeepAlive";
            request.Headers["Accept-Encoding"] = "gzip, deflate";
            request.Headers["Accept-Language"] = "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3";
            request.Host = "gps.cn";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
            //System.Net.WebProxy proxy = new WebProxy("8.7.16.16", 80);
            //request.Proxy = proxy;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = null;
            string result = string.Empty;
            if ("gzip".Equals(response.ContentEncoding))
            {
                responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else if ("deflate".Equals(response.ContentEncoding))
            {
                responseStream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else
            {
                responseStream = response.GetResponseStream();
            }
            if (responseStream != null)
            {
                result = new StreamReader(responseStream, Encoding.GetEncoding(response.CharacterSet)).ReadToEnd().ToString();
            }
时间: 2024-11-03 21:09:41

后台请求数据的几个实例(含获取数据的压缩方式的处理)的相关文章

c#发送数据到剪贴板及从剪贴板获取数据

我以winform为例,设计两个textbox控件,分别命名为:textbox1和textbox2,设计两个button控件,分别命名:为btn_send和btn_get. 代码如下: <span style="font-family:Microsoft YaHei;font-size:14px;"> private void btn_send_Click(object sender, EventArgs e) { try { Clipboard.SetText(textB

Activity与Fragment数据传递之Fragment从Activity获取数据

整理Fragment与Activity之间的数据交换,大体上包括三种: 1.Fragment从Activity获取数据 2.Activity从Fragment获取数据 3.Fragment之间获取数据通常,如果Activity向不同的Activity传递数据,最常用的是通过Intent.putExtra()方法,将简单类型的数据或可序列化的数据保存在Intent对象中,然后在目标Activity中使用getXxx(getInt,getString等)方法获得这些数据.  从Activity向Fr

node后台,MongoDB作为数据库,vue前端获取数据并渲染

作为自己的第一个项目,也是毕业论文,记录点点滴滴,做完发现很简单,但还是纠结了几天.项目经历太少了 ...... 前提:vue脚手架创建项目,node后台,MongoDB数据库,并且跨域还有配置好 背景:前端Home.vue组件从后台获取图片并以轮播图效果展示 后台: models文件夹:存放各种数据库文件,由于存在好多种数据表结构,连接数据库时会产生问题,因此单独创建一个文件夹,创建db.js文件,该文件专门连接数据库.routes文件夹:路由处理文件 1 /** db.js 2 * 完成 M

php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法

现象如标题. 解决思路: 1,在php中添加 header('charset=utf-8'); 2,在连接到数据库后,添加如下代码,写入数据和获取数据的地方均要添加 mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_serve

POST提交数据,请求头的Content-Type的设置对获取数据方式的影响

这个问题在对接国外一家开发商的时候出现,在他们沙箱环境里,他们POST提交XML给我,按理应该在request.getInputStream()里把数据读出来,但我却读不出来,反而能直接循环request.getParameterMap().keySet()里找到对应的主键,相应找到value就开始对接了,当时也没过多的在意,等到对接完成,接入他们的正式环境时,我却读不到任何数据了,这个... 对方刚开始认为是我这边代码有问题,我也很坚定我的看法沙箱环境和正式环境到底有什么差异,对方技术很肯定的

ios学习(从网络上获取数据)

从网络上获取数据: 1.从网络上获取数据,采用如下这种方式会带来主线成阻塞现象,主线成主要是负责的是ui的交互(用户输入指令或数据,系统给一个反馈) 会进一步让ui停止交互 1)首先给我们将要下载的图片设置好位置 UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"地址"]]]; UIImageView *imageView = [[UIImageVie

vue 中使用 AJAX获取数据的方法

在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: <script type="text/javascript"> new Vue({ el:'#app', data:{data:""}, created:function(){ var url="json.jsp"; var _self=this; $.get(url,function(data){ _se

百度地图API获取数据

目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费API获取数据的还有很多,包括新浪.豆瓣电影.饿了么.阿里.腾讯等今天使用百度地图API来请求我们想要的数据. 第一步.注册百度开发者账号 注册成功后就可以获取到应用服务AK也就是API秘钥,这个是最重要的,应用名称可以随便取,如果是普通用户一天只有2000调用限额,认证用户一天有10万次调用限额 在百

Swift - 后台获取数据(Background Fetch)的实现

前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是为了那些需要定期更新的应用程序设计的,比如天气应用,新闻客户端,社交网络应用程序等.在启动后台获取之后,应用程序可以在后台被唤醒,在后台获取最新信息,以便在用户将应用程序转到前台时能够立即显示这些信息. 2,后台获取功能开启 首先在选中项目,在Capabilities(功能)选项卡,启用Backgr