现在的位置: 首页 > 综合 > 正文

.net之访问Internet(上)

2012年09月10日 ⁄ 综合 ⁄ 共 1984字 ⁄ 字号 评论关闭

.net提供了使用各种网络协议访问网络和Internet的类库

1. WebClient类

    如果只是想从某个网站上读取文件,使用WebClient类就足够了,它通过一两个简单的命令就可以执行一些基本操作。使用起来非常简单,创建一个WinForm工程,添加ListBox控件,将百度页面的内容读取出来。WebClient类还有UploadFile和UploadData方法可以上传文件

    代码示例: 

        public Form1()
        {
            InitializeComponent();

            System.Net.WebClient Client = new WebClient();//创建client
            Stream strm = Client.OpenRead("http://www.baidu.com");//创建读取流
            StreamReader sr = new StreamReader(strm);
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                listBox1.Items.Add(line);
            }

            strm.Close();//关闭流

        }

2. WebRequest类和WebResponse类

    WebClient类使用起来很简单,但是不能使用它提供身份验证证书,在使用它上传文件时,好多网站不接收没有身份验证的上传文件。而且WebClient可以使用任意协议接收和发送请求,这样它就不能处理类似于HTTP的cookie信息。如果想使用这些特性,就要使用WebRequest类和WebResponse类。

    获取HTTP标题信息示例: 

    WebRequest wrq = WebRequest.Create("http://www.baidu.com");
    HttpWebRequest hwrq = (HttpWebRequest)wrq;

    listBox1.Items.Add("Request Timeout (ms) = " + wrq.Timeout);
    listBox1.Items.Add("Request Keep Alive = " + hwrq.KeepAlive);
    listBox1.Items.Add("Request AllowAutoRedirect = " + hwrq.AllowAutoRedirect);
    listBox1.Items.Add("\r\n");

    WebResponse wrs = wrq.GetResponse();
    WebHeaderCollection whc = wrs.Headers;
    for(int i = 0; i< whc.Count; i++)
    {
        listBox1.Items.Add("Header " + whc.GetKey(i) + " : " + whc[i]);
    }

    使用身份验证:在GetResponse之前给wrq的Credentials附上值,如下,

    NetworkCredential myCred = new NetworkCredential("myusername", "mypassword");
    wrq.Credentials = myCred;

    异步页面请求:   

    public Form1()
    {
        InitializeComponent();

        WebRequest wrq = WebRequest.Create("http://www.baidu.com");
        wrq.BeginGetResponse(new AsyncCallback(OnResponse), wrq);//异步启动请求,OnResponse方法实际响应请求

    }
    protected void OnResponse(IAsyncResult ar)
    {
        WebRequest wrq = (WebRequest)ar.AsyncState;
        WebResponse wrs = wrq.EndGetResponse(ar);
        //to do read
    }

3. 把输出结果显示成为HTML页面,神奇WebBrowser类

    WebBrowser类可以让用户在窗体中导航网页,里面有众多IE所具有的属性可以用,还可以通过 Document 属性操作网页的内容

    WebBrowser.Navigate(“访问地址”),就可以加载到需要访问的网页,它还支持前进后退等各种操作

 

抱歉!评论已关闭.