我在数据库中有一些网址。问题是网址是重定向到我想要的网址。
我有这样的东西
http://www.mytestsite.com/test/test/?myphoto=true
现在如果我去这个网站,它会重定向到照片,所以网址最终会变成
http://www.mytestsite.com/test/myphoto.jpg
是否可以通过 C# 以某种方式抓取(下载)然后让它重定向并获取真实的 url,以便我可以下载图像?
我在数据库中有一些网址。问题是网址是重定向到我想要的网址。
我有这样的东西
http://www.mytestsite.com/test/test/?myphoto=true
现在如果我去这个网站,它会重定向到照片,所以网址最终会变成
http://www.mytestsite.com/test/myphoto.jpg
是否可以通过 C# 以某种方式抓取(下载)然后让它重定向并获取真实的 url,以便我可以下载图像?
我认为您在HttpWebRequest.AllowAutoRedirect属性之后。该属性获取或设置一个值,该值指示请求是否应遵循重定向响应。
示例取自 MSDN
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
myHttpWebRequest.MaximumAutomaticRedirections=1;
myHttpWebRequest.AllowAutoRedirect=true;
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
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; } }