zoukankan      html  css  js  c++  java
  • C#模拟Post和Get方式发送数据的技巧

    通过应用程序读取网页信息的时候,通常需要抓取网页的数据,但是有一个问题就是很多网页需要登录后才能够获得页面数据,那么就需要保存当前的cookie,在.NET中可以使用CookieContainer 对象来保存登录后的Cookie信息,每次发送数据的时候加上Cookie信息,就可以解决这个问题了。
          #region 同步通过POST方式发送数据
            /// <summary>
            /// 通过POST方式发送数据
            /// </summary>
            /// <param name="Url">url</param>
            /// <param name="postDataStr">Post数据</param>
            /// <param name="cookie">Cookie容器</param>
            /// <returns></returns>
            public string SendDataByPost(string Url,string postDataStr,ref CookieContainer cookie)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                if (cookie.Count == 0)
                {
                    request.CookieContainer = new CookieContainer();
                    cookie = request.CookieContainer;
                }
                else
                {
                    request.CookieContainer = cookie;
                }
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postDataStr.Length;
                Stream myRequestStream = request.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
                myStreamWriter.Write(postDataStr);
                myStreamWriter.Close();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString= myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return retString;
            }
            #endregion
            #region 同步通过GET方式发送数据
            /// <summary>
            /// 通过GET方式发送数据
            /// </summary>
            /// <param name="Url">url</param>
            /// <param name="postDataStr">GET数据</param>
            /// <param name="cookie">GET容器</param>
            /// <returns></returns>
            public string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +( postDataStr == "" ? "" : "?") + postDataStr);
                if (cookie.Count == 0)
                {
                    request.CookieContainer = new CookieContainer();
                    cookie = request.CookieContainer;
                }
                else
                {
                    request.CookieContainer = cookie;
                }
                request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";
                
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return retString;
            }
            #endregion
  • 相关阅读:
    zookeeper 分布式锁
    mysql linux 安装
    分布式配置中心Apollo
    分布式任务调度平台xxl-job
    Java并发编程笔记之ThreadLocalRandom源码分析
    Java并发编程笔记之ThreadLocal源码分析
    SpringCloud实战10-Sleuth
    SpringCloud实战9-Stream消息驱动
    SpringCloud实战8-Bus消息总线
    SpringCloud实战7-Config分布式配置管理
  • 原文地址:https://www.cnblogs.com/top5/p/1904819.html
Copyright © 2011-2022 走看看