C# 下载文件时虚拟用户XXX登录
我使用WebClient类从给定URL下载文件。 我正在使用以下功能将其保存在本地服务器上C# 下载文件时虚拟用户XXX登录,c#,.net,network-programming,webclient-download,C#,.net,Network Programming,Webclient Download,我使用WebClient类从给定URL下载文件。 我正在使用以下功能将其保存在本地服务器上 WebClient wb = new WebClient(); NetworkCredential creds = new NetworkCredential("my username", "my password"); IWebProxy proxy = HttpWebRequest.DefaultWebProxy; wb.Proxy = proxy; wb.Credentials = creds; w
WebClient wb = new WebClient();
NetworkCredential creds = new NetworkCredential("my username", "my password");
IWebProxy proxy = HttpWebRequest.DefaultWebProxy;
wb.Proxy = proxy;
wb.Credentials = creds;
wb.DownloadFile("source url", "C://downloaded.rpt.rsp");
但经过处理后,目标文件包含
虚拟用户XXX已成功登录
您的代码似乎是正确的。您是否尝试通过IE或chrome等web浏览器手动下载该文件,并查看其下载内容?如果它仍然这样做,可能服务器正在将URL重新定向到某个地方。请检查 仅供参考,最简单的代码没有身份验证和代理下载文件
using (WebClient Client = new WebClient ())
{
Client.DownloadFile("http://www.abc.com/file/song/a.mpeg", "a.mpeg");
}
这似乎是来自服务器端的两步响应。 使用cookie进行身份验证并重定向到文件 您可以在打开Fiddler的浏览器下载时查看详细信息。浏览器执行重定向,但在执行Http请求时该重定向不起作用
尝试使用httpWebRequest和cookie容器进行请求。然后用身份验证cookie再次调用它。我认为您需要执行两个步骤,1登录,2下载文件 试试这个:
CookieAwareWebClient wb = new CookieAwareWebClient();
string response = wb.DownloadString("source url"); //should say Virtual user XXX Logged in
wb.DownloadFile("source url", "C://downloaded.rpt.rsp");
确保您正在使用CookieAwareWebClient:
public class CookieAwareWebClient : WebClient
{
private readonly CookieContainer m_container = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
HttpWebRequest webRequest = request as HttpWebRequest;
if (webRequest != null)
{
webRequest.CookieContainer = m_container;
}
return request;
}
}
这可能是服务器的答案吗?可能是你没有跟踪cookies吗?阿米尔-你有代码示例吗?我尝试了HttpWebRequest,但得到了相同的结果。我也试过Fiddler,但所有的流量都是加密的。