以下是例子:
内网的东东,地址是http://172.168.0.1/ABC (账号为:ABC 密码为:123456)用的是WINDOWS验证。
请问用C#如何实现登陆下载网页文件?
以前直接下载倒是做过,但是有了这个WINDOWS验证,我就挂了 网上找了好久也没找到,在线等 麻烦了!!
最好给出代码,我好测试 谢谢!!
内网的东东,地址是http://172.168.0.1/ABC (账号为:ABC 密码为:123456)用的是WINDOWS验证。
请问用C#如何实现登陆下载网页文件?
以前直接下载倒是做过,但是有了这个WINDOWS验证,我就挂了 网上找了好久也没找到,在线等 麻烦了!!
最好给出代码,我好测试 谢谢!!
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
}
手动的过程就是打开地址:http://172.168.0.1/ABC 弹出框提示身份验证,我们内网是用windows验证的,我想用C#实现直接以程序方式登陆,然后下载默认地址的网页文件,就是这样
回3楼的:虽然您的代码不完全和我要的一样,但是还是给了我很好的提示,谢谢 我先试试 OK了就给分 :)
client.DownloadFile(URLAddress, savePath);
关键的是我不用默认的验证 而是用:
client.Credentials = new NetworkCredential("UserName","PassWord");