3

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

我有这样的东西

http://www.mytestsite.com/test/test/?myphoto=true

现在如果我去这个网站,它会重定向到照片,所以网址最终会变成

http://www.mytestsite.com/test/myphoto.jpg

是否可以通过 C# 以某种方式抓取(下载)然后让它重定向并获取真实的 url,以便我可以下载图像?

4

2 回答 2

7

我认为您在HttpWebRequest.AllowAutoRedirect属性之后。该属性获取或设置一个值,该值指示请求是否应遵循重定向响应。

示例取自 MSDN

HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");    
myHttpWebRequest.MaximumAutomaticRedirections=1;
myHttpWebRequest.AllowAutoRedirect=true;
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
于 2012-07-31T22:09:17.053 回答
3

HttpWebRequest在将它与 SharePoint 外部 URL 一起使用时,我在尝试始终完全重定向时遇到了问题;我根本无法让它工作。

经过一番折腾后,我发现这可以完成,WebClient而且对我来说更可靠。

为了让它与您一起工作,WebClient您似乎必须创建一个派生自的类,WebClient以便您可以手动强制AllowAutoRedirect为真。

我在这个答案中写了更多关于这个的内容,它从这个问题中借用了它的代码。

关键代码是:

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;
  }
}
于 2018-10-18T23:20:18.770 回答