以下是例子:
内网的东东,地址是http://172.168.0.1/ABC (账号为:ABC  密码为:123456)用的是WINDOWS验证。
请问用C#如何实现登陆下载网页文件?
以前直接下载倒是做过,但是有了这个WINDOWS验证,我就挂了 网上找了好久也没找到,在线等 麻烦了!!
最好给出代码,我好测试 谢谢!!

解决方案 »

  1.   


     private void DownFileToDirectory() 
        { 
            if (Request["key"] != null && !Request["key"].Equals(string.Empty)) 
            { 
                try 
                { 
                    int fid = Convert.ToInt32(Request["key"]);      //文件的编号,从库中取,服务端有此资源 
                    string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
                    SqlConnection conn = new SqlConnection(connStr); 
                    string sql = "select FileName from fileTable where fileId=" + fid + ""; 
                    SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); 
                    DataTable dt = new DataTable(); 
                    adapter.Fill(dt); 
                    if (dt.Rows.Count >  0) 
                    { 
                        URLAddress = "http://192.168.1.210/Test/DownloadList.aspx"; 
                        fileName = dt.Rows[0]["FileName"].ToString(); 
                        StartDownload(); 
                    } 
                } 
                catch 
                { 
                    Response.Redirect("Download.aspx"); 
                } 
            } 
            Response.Redirect("Download.aspx"); 
        } 
        #endregion     #region 下载某网页的文件 
        private void DownloadFileByUrl() 
        { 
            string Dir = @"C:\Program Files\myDirectory\fileByDownload"; 
            if (!Directory.Exists(Dir)) 
            { 
                Directory.CreateDirectory(Dir); 
            } 
            string savePath = Dir + "\\" + fileName; 
            if (File.Exists(savePath)) 
            { 
                return; 
            }         try 
            { 
                WebRequest myre = WebRequest.Create(URLAddress); 
            } 
            catch (WebException exp) 
            { 
                string e = exp.Message; 
            }         try 
            { 
                client.Credentials = CredentialCache.DefaultCredentials; 
                client.DownloadFile(URLAddress, savePath); 
            } 
            catch (WebException exp) 
            { 
                string e = exp.Message; 
            } 
            finally 
            { 
                Thread cur = Thread.CurrentThread; 
                if (cur.Name.Equals("autoDown")) 
                { 
                    cur.Abort(); 
                } 
            } 
        } 
        #endregion     #region 启用线程,下载文件 
        private void StartDownload() 
        { 
            Thread th = new Thread(new ThreadStart(DownloadFileByUrl)); 
            th.Name = "autoDown"; 
            th.Start(); 
        } 
        #endregion 

     
     
      

  2.   

    回2楼的:
    手动的过程就是打开地址:http://172.168.0.1/ABC 弹出框提示身份验证,我们内网是用windows验证的,我想用C#实现直接以程序方式登陆,然后下载默认地址的网页文件,就是这样
    回3楼的:虽然您的代码不完全和我要的一样,但是还是给了我很好的提示,谢谢 我先试试 OK了就给分 :)
      

  3.   

                client.Credentials = CredentialCache.DefaultCredentials; 
                client.DownloadFile(URLAddress, savePath); 
    关键的是我不用默认的验证 而是用:
    client.Credentials = new NetworkCredential("UserName","PassWord");