`

c# http编程

    博客分类:
  • C#
 
阅读更多

 

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;
            }
        }

    }
分享到:
评论

相关推荐

    c#网络编程实例教程源代码

    C#网络编程不仅包括基本的TCP/IP通信,还包括HTTP、HTTPS、SMTP(电子邮件)、FTP等应用层协议的使用。源代码部分可能涵盖了这些协议的实现,让你能动手构建实际的网络应用。 压缩包中的"C#网络编程_PPT"可能是一个...

    C# 网络编程网络原理

    - 在C#中,可以使用System.Net命名空间下的类来进行网络编程,如Socket类用于低级别网络通信,TcpClient/TcpListener类用于TCP连接,以及HttpWebRequest/HttpWebResponse类处理HTTP请求和响应。 7. **网络模型的...

    C#网络编程培训课件

    C#网络编程---第1章_进程、线程与网络协议.ppt C#网络编程---第2章_TCP应用编程.ppt C#网络编程---第3章_UDP应用编程.ppt ...C#网络编程---第9章_HTTP编程.ppt C#网络编程---第10章_Web_Service_编程.ppt

    C#网络编程基础

    在网络编程中,C#提供了System.Net命名空间,它包含了一系列类和接口用于实现各种网络通信协议,如TCP/IP、UDP、HTTP等。System.Net.Sockets命名空间下的TcpClient和TcpListener类是进行TCP通信的基础,而UdpClient...

    c#网络编程Demo

    C#网络编程是开发应用程序与远程系统交互的重要领域,它涉及到多种协议和技术。在这个"C#网络编程Demo"中,你可以找到一系列的示例代码,帮助你深入理解和实践这些概念。 首先,让我们了解一下TCP(传输控制协议)...

    C#100个编程实例程序

    6. **网络通信**:C#的System.Net命名空间提供了丰富的网络编程接口,实例可能涉及HTTP请求、Socket通信、FTP上传下载等,帮助开发者实现客户端和服务端的交互。 7. **数据库交互**:ADO.NET是C#进行数据库操作的...

    c#网络应用编程.pdf

    《C#网络应用编程》是一本致力于教授C#语言进行网络编程的书籍,作者Richard Blum是一位拥有丰富网络和系统管理经验的专业人士,他的工作经验为本书提供了深厚的理论与实践经验支撑。书中不仅介绍C#的基础网络编程...

    c#精彩编程百例(源代码)

    《c#精彩编程百例》配套源码 附录:本书配套光盘说明 本光盘包括本书所有源代码及其可执行文件、配套的C#编辑器(包括编辑器的C#源代码)及一些参考资料。 一、安装程序 将此光盘放到CD-ROM驱动器,运行Setup.htm...

    基于VS2008的c#网络编程示例

    总结,基于VS2008的C#网络编程示例涉及到网络通信的基础知识,如TCP/IP和HTTP协议的实现,同时也涵盖了如何在VS2008中进行项目管理和代码调试。而C#数据库编程示例则讲解了如何利用ADO.NET框架连接数据库、执行SQL...

    C#网络编程(很全)

    C#网络编程涵盖了众多主题,包括但不限于TCP/IP协议栈、套接字(Sockets)、HTTP协议、WebSocket、ASP.NET Web API以及网络异步编程等。 首先,我们要理解C#中的网络编程基础。C#提供了System.Net命名空间,它包含...

    C#网络编程技术教程

    C#网络编程技术教程,包含各种C# ftp webservice http socket

    C#网络编程1

    C#网络编程是.NET框架中一个重要的组成部分,它允许开发者创建能够通过互联网进行通信的应用程序。C#提供了丰富的类库,如System.Net命名空间,使得网络编程变得相对简单。在这个主题中,我们将深入探讨C#网络编程的...

    c#网络编程技术教程

    5. **HTTP编程**:C#提供了HttpClient类,方便进行HTTP请求和响应处理,支持GET、POST等多种HTTP方法,以及处理HTTP头、Cookies、身份验证等。 6. **WebSocket**:对于需要实时双向通信的应用,C#提供了WebSocket...

    c#网络编程经典案例

    在这个经典案例中,我们将深入探讨C#语言在网络编程中的应用,涵盖TCP、FTP和HTTP协议的实现。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在C#中,我们可以使用System.Net....

    C#网络编程教学

    3. **HTTP编程**:C#中的System.Net.Http命名空间提供了一组类,如HttpClient和HttpRequestMessage,用于发送HTTP请求和处理响应。HttpClient是异步操作的理想选择,可以方便地进行GET、POST等操作,广泛应用于Web ...

    C#网络核心编程

    《C#网络核心编程》是一本深入探讨C#语言在网络编程领域的专著,它涵盖了从基础概念到高级技术的广泛内容。在C#语言中,网络编程是开发跨平台、分布式应用的重要组成部分,本书旨在帮助开发者掌握这方面的核心技术。...

    C#网络编程_电子邮电

    在C#中,网络编程主要涉及到Socket、TCP/IP、HTTP、WebSocket等协议,以及对这些协议的使用和操作。下面将详细介绍C#网络编程中的几个重要知识点。 1. **Socket编程**: Socket是网络通信的基础,它提供了进程间...

    c#网络编程服务及客户端实例

    “C#网络编程”这个文件可能是一个综合性的指南或代码示例集合,涵盖了C#网络编程的各个方面,包括TCP、UDP、HTTP等协议的使用。 总的来说,C#网络编程涉及多个层面,从底层的Socket操作到高层的Web应用开发,都...

    C#网络应用编程(第2版)

    《C#网络应用编程(第2版)》是一本深入探讨C#网络编程技术的书籍,旨在为初学者提供坚实的理论基础,同时也为有经验的开发者提供进一步提升的资源。这本书详细介绍了C#语言在网络编程领域的应用,涵盖了从基础知识到...

    C#网络编程技术教程.rar

    《C#网络编程技术教程》是一本专注于C#语言在TCP/IP网络编程领域的深度解析书籍。这本书涵盖了从基础概念到高级应用的全方位知识,旨在帮助读者掌握如何利用C#进行高效、稳定的网络通信。 首先,书中会介绍网络编程...

Global site tag (gtag.js) - Google Analytics