gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:33:48 25 4
gpt4 key购买 nike

基本上,我正在尝试从 CNet 的 Download.com 获取 EXE

所以我创建了网络解析器,到目前为止一切顺利。

这是直接从他们的网站上提取的示例链接:

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” header 的值,然后创建一个新的 FtpWebRequest 来下载该资源。

关于c# - 无法处理从 HTTP/HTTPS 协议(protocol)到其他不同协议(protocol)的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com