WebRequest

1  webrequest 是什么:编程方式模拟web请求,利用webrequest可以实现 相当于一个浏览器请求一个网页的效果,可以属性上的自我控制

官方解释

WebRequest 是 .NET Framework 的请求/响应模型的 abstract 基类,用于访问 Internet 数据。使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据,在这种方式下,应用程序处理 WebRequest 类的实例,而协议特定的子类则执行请求的具体细节。

请求从应用程序发送到某个特定的 URI,如服务器上的网页。URI 从一个为应用程序注册的 WebRequest 子代列表中确定要创建的适当子类。注册 WebRequest 子代通常是为了处理某个特定的协议(如 HTTP 或 FTP),但是也可以注册它以处理对特定服务器或服务器上的路径的请求。

请求 ------>相应请求----->得到回复流

请求可以设置属性,控制请求的效果,比如 请求的方式,(post,get 等等)请求的IP,请求的http(消息头.请求的消息体),长度.编码方式 等等.

默认是get 请求.post 和get 有点区别. post 需要先 创建写入数据的GetRequestStream()

post 请求

var request = (HttpWebRequest)WebRequest.Create(Url);
                    request.Method = "POST";
                    request.ContentType = "application/json";
                    request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
                    var myRequestStream = request.GetRequestStream();
                    var myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
                    myStreamWriter.Write(postDataStr);
                    myStreamWriter.Close();
                    var response = (HttpWebResponse)request.GetResponse();
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        continue;
                    }
                    var myResponseStream = response.GetResponseStream();
                    var myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                    retString = myStreamReader.ReadToEnd();
                    if (response != null)
                    {
                        response.Close();
                    }
                    myStreamReader.Close();

默认的Get

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com");
          
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader stream = new StreamReader(response.GetResponseStream());

当然 还有许多东西 可以设置

原文地址:https://www.cnblogs.com/jiaofu2012/p/3525062.html