c#-无法处理从HTTP / HTTPS协议到其他不同协议的重定向

基本上,我试图从CNet的Download.com上获取一个EXE.

所以我创建了Web解析器,到目前为止一切进展顺利.

以下是直接从其网站提取的示例链接:

http://dw.com.com/redir?edId=3&siteId=4&oId=3001-20_4-10308491&ontId=20_4&spi=e6323e8d83a8b4374d43d519f1bd6757&lop=txt&tag=idl2&pid=10566981&mfgId=6250549&merId=6250549&pguid=PlvcGQoPjAEAAH5rQL0AAABv&destUrl=ftp%3A%2F%2F202.190.201.108%2Fpub%2Fryl2%2Fclient%2Finstaller-ryl2_v1673.exe

问题出在这里:尝试下载时,它以HTTP开头,然后重定向到FTP站点.我已经尝试过.NET的WebClient和HttpWebRequest对象,看起来两者都不支持重定向.

此代码在GetResponse()处失败;

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://dw.com.com/redir");
WebResponse response = req.GetResponse();

现在,我也尝试过这样:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://dw.com.com/redir");
req.AllowAutoRedirect = false;
WebResponse response = req.GetResponse();
string s = new StreamReader(response.GetResponseStream()).ReadToEnd();

而且它不再抛出错误,但是变量s变成了一个空字符串.

我很茫然!有人可以帮忙吗?

解决方法:

您可以从response.headers中获取“ Location”标头的值,然后创建一个新的FtpWebRequest来下载该资源.

上一篇:重定向功能PHP


下一篇:javascript-如何重定向然后在node.js中停止