c#控制台实现post网站登录

如题,首先我写了一个web页面来实现post登陆,只做演示,代码如下

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string name = context.Request.Params["username"];
            
            if (name == "1")
            {
                context.Response.Write("ok");
            }
            else
            {
                context.Response.Write("no");
            }
       
        }

只要name是1就ok否则no

简洁说下Get和post  get通过在网络地址中附加参数来完成数据的提交,可以在url地址中看到,而post则是在页面内容中填写参数来完成提交  F12看一下就是username=1&userpwd=1这种格式的, POST 中文数据的时候,先中文字符转换为编码后的 ASCII 码,然后提交到服务器,提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。

然后控制台模拟一下  HttpWebRequest  HttpWenResponse

HttpWebRequest类主要利用Http协议来和服务器交互,在Method中指定提交方式,GET或者POST

代码如下

 static void Main(string[] args)
        {
            string name = "1";
            string postdata = "username=" + name;
            byte[] data = Encoding.UTF8.GetBytes(postdata);
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:8022/login.ashx");
            webrequest.Method = "POST";
            webrequest.ContentType = "application/x-www-form-urlencoded";
            webrequest.ContentLength = data.Length;
            Stream stream = webrequest.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Close();
            HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();
            StreamReader sr = new StreamReader(webresponse.GetResponseStream(), Encoding.UTF8);
            string s = sr.ReadToEnd();
            Console.WriteLine(s);
        }

  结果自然ok  当把name改为2结果为no满足需求

当然这只是一个很简单的模拟,也就是试验一下

原文地址:https://www.cnblogs.com/ZyCoder/p/6670907.html