Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过具有重定向的代码下载文件?_C#_.net - Fatal编程技术网

C# 通过具有重定向的代码下载文件?

C# 通过具有重定向的代码下载文件?,c#,.net,C#,.net,我在数据库中有一些URL。问题是URL是重定向到我想要的内容的URL 我有类似的东西 现在如果我去这个网站,它会重定向到照片,这样url就会被删除 是否有可能通过C#刮取(下载),然后重定向并获得真实的url,这样我就可以下载图像了?我想你是在寻找这个属性。属性获取或设置一个值,该值指示请求是否应遵循重定向响应 示例取自MSDN HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.cont

我在数据库中有一些URL。问题是URL是重定向到我想要的内容的URL

我有类似的东西

现在如果我去这个网站,它会重定向到照片,这样url就会被删除

是否有可能通过C#刮取(下载),然后重定向并获得真实的url,这样我就可以下载图像了?

我想你是在寻找这个属性。属性获取或设置一个值,该值指示请求是否应遵循重定向响应

示例取自MSDN

HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");    
myHttpWebRequest.MaximumAutomaticRedirections=1;
myHttpWebRequest.AllowAutoRedirect=true;
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();

当与SharePoint外部URL一起使用时,我在尝试使HttpWebRequest始终完全重定向时遇到问题;我就是不能让它工作

经过大量的吹毛求疵,我发现这个也可以用
WebClient
来完成,这对我来说更可靠

要使其与
WebClient
一起工作,您似乎必须创建一个派生自
WebClient
的类,以便手动强制
AllowAutoRedirect
为true

我写了更多关于这个的东西,它借用了它的代码

关键代码是:


所有这些链接都断了也没用。你知道,你可以使用php来提供图像。如果您是通过HTML重定向完成的,则必须解析HTML并搜索重定向标记。通过javascript来做这件事将是一件非常痛苦的事情。@Wug-谁说过php或javascript?他没有提供任何服务,他想下载通过重定向从服务器访问的图像。他似乎没有控制服务器。不,我没有控制服务器。我需要将数百个img移动到新服务器上,因此我需要下载它们,但我拥有的一些链接是唯一用于转到pg并重定向到实际img的链接(不知道他们为什么这样做,也不只是直接链接到img)。我不能提供有效的链接(我也不知道任何公共网站可以这样做),因为这是公司的财产。这正是我要找的!!没有想到httpWebRequest只是查看Webclient(我通常使用的)。我认为还应该提到,您必须关闭myHttpWebResponse。如果您尝试在WebClient出现大量超时后立即使用它,则会出现这种情况。@chobo2是的,您的权利It MSDN应该提到这一点,作为一种必要/良好的做法
class CustomWebclient: WebClient
{
  [System.Security.SecuritySafeCritical]
  public CustomWebclient(): base()
 {
 }
 public CookieContainer cookieContainer = new CookieContainer();


 protected override WebRequest GetWebRequest(Uri myAddress)
 {
       WebRequest request = base.GetWebRequest(myAddress);
       if (request is HttpWebRequest)
      {
           (request as HttpWebRequest).CookieContainer =   cookieContainer;
           (request as HttpWebRequest).AllowAutoRedirect = true;
      }
      return request;
  }
}