c# http编程

 

c# http编程
2010-06-18 11:10
============================================================

using System;
using System.Net;
using System.IO;
using System.Text;

class Test
{
     [STAThread]
    static void Main(string[] args)
     {
        // 

        // TODO: 在此处添加代码以启动应用程序 

        // 

        string url = "http://localhost/csdn2/1.asp";

        //             <% 

        //             if request("aa")="zhuye" then session("ok")="ok" 

        //             if session("ok")="ok" then 

        //             response.write("登录") 

        //             else 

        //             response.write("没有登录") 

        //             end if 

        //             %> 

        string indata = "aa=zhuye";
        string outdata = "";
         CookieContainer myCookieContainer = new CookieContainer();
        //新建一个CookieContainer来存放Cookie集合 


         HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create(url);
        //新建一个HttpWebRequest 

         myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
         myHttpWebRequest.ContentLength = indata.Length;
         myHttpWebRequest.Method = "POST";
         myHttpWebRequest.CookieContainer = myCookieContainer;
        //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 


         Stream myRequestStream = myHttpWebRequest.GetRequestStream();
         StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
         myStreamWriter.Write(indata);
        //把数据写入HttpWebRequest的Request流 

         myStreamWriter.Close();
         myRequestStream.Close();
        //关闭打开对象 


         HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
        //新建一个HttpWebResponse 

         myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
        //获取一个包含url的Cookie集合的CookieCollection 

         Stream myResponseStream = myHttpWebResponse.GetResponseStream();
         StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
         outdata = myStreamReader.ReadToEnd();
        //把数据从HttpWebResponse的Response流中读出 

         myStreamReader.Close();
         myResponseStream.Close();
         Console.WriteLine(outdata);
        //显示"登录" 


        //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 

         myHttpWebRequest = (HttpWebRequest) WebRequest.Create(url);
         myHttpWebRequest.CookieContainer = myCookieContainer;//* 

        //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 

         myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
         myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
         myResponseStream = myHttpWebResponse.GetResponseStream();
         myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
         outdata = myStreamReader.ReadToEnd();
         myStreamReader.Close();
         myResponseStream.Close();
         Console.WriteLine(outdata);
        //再次显示"登录" 

        //如果把*行注释调,就显示"没有登录" 

     } 
}注释写得很明确了,不多罗嗦了。 补充:如果是以get方式登录的话,直接修改url就可以了,indate可以不写任何东西。(不要去修改 myHttpWebRequest.Method为GET),比如把asp文件修改为 if request.querystring("aa")="zhuye" then session("ok")="ok",只要修改url为 string url="http://localhost/csdn2/1.asp?aa=zhuye";即可。 
=============================================================================

登录校内网的代码

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string Txt="";
            Login(UserName.Text, UserPwd.Text, LoginUrl.Text, out Txt);

           

            //获取登录后的页面数据

            textBox2.Text = Txt;


            //判断该页面数据是否是登陆后的数据就可以判断是否登录成功了

            //由于都是字符串操作就没有必要写了呵呵
        }

        public void Login(string UserName, string UserPwd, string LoginUrl, out string Txt)
        {
            try
            {
                //定义Cookie容器
                CookieContainer CookieArray = new CookieContainer();

                //创建Http请求
                HttpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl);

                //登录数据
                string LoginData = "email=" + UserName + "&password=" + UserPwd;
                //数据被传输类型
                LoginHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
                //数据长度
                LoginHttpWebRequest.ContentLength = LoginData.Length;
                //数据传输方法 get或post
                LoginHttpWebRequest.Method = "POST";
                //设置HttpWebRequest的CookieContainer为刚才建立的那个CookieArray 
                LoginHttpWebRequest.CookieContainer = CookieArray;
                //获取登录数据流
                Stream myRequestStream = LoginHttpWebRequest.GetRequestStream();
                //StreamWriter
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.Default);
                //把数据写入HttpWebRequest的Request流 
                myStreamWriter.Write(LoginData);

                //关闭打开对象     
                myStreamWriter.Close();

                myRequestStream.Close();

                //新建一个HttpWebResponse     
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)LoginHttpWebRequest.GetResponse();

                //获取一个包含url的Cookie集合的CookieCollection     
                myHttpWebResponse.Cookies = CookieArray.GetCookies(LoginHttpWebRequest.RequestUri);

                WebHeaderCollection a = myHttpWebResponse.Headers;

                Stream myResponseStream = myHttpWebResponse.GetResponseStream();

                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.Default);

                Txt = myStreamReader.ReadToEnd();

                //把数据从HttpWebResponse的Response流中读出     
                myStreamReader.Close();

                myResponseStream.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值