我做了一个解析html文档然后获取一些网址的应用程序,问题是网址只能直接从导航器下载。
在VB.NET或C#中,我如何重定向此网址以获取直接链接,以便稍后粘贴链接以在下载管理器中下载?
dim url as string = "http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"
我需要说的是,我没有太多试验过http的东西,也许我错了,网址有重定向的东西或类似的错误,请你说我怎样才能重定向那种网址或者如果我错了。
更新:
试过这个,但我得到了相同的网址而没有任何变化:
Dim url As String = _
"http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"
Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
request.AllowAutoRedirect = True
Dim response As HttpWebResponse
Dim resUri As String
response = request.GetResponse
resUri = response.ResponseUri.AbsoluteUri
MsgBox(resUri)
更新2:
在这里答案HttpWebRequest Login data Then Redirect
他说
如果透明处理重定向,则_response.ResponseURI 将包含重定向到的地址。如果没有,你必须阅读 重定向标题并决定是否要求 新页面。
所以......如果我需要这样做,我该怎么做?
用于Firefox的更新3:
DownloadThemAll
插件可以获取直接网址...因为您可以看到所有网址都以.mp3文件扩展名完成,这就是我需要的内容
答案 0 :(得分:3)
据我所知,网址
是直接网址,直接文件网址不需要包含文件类型。
您可以使用
下载文件string url = "http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"
WebClient wc = new WebClient();
wc.DownloadFile(url, fileName);
您可以使用
获取fileName(Madonna-Like A Virgin -www.mrtzcmp3.net.mp3)HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
string header = myHttpWebResponse.Headers.ToString();
fileName = header.Remove(0, header.IndexOf("filename=")+10);
fileName = fileName.Remove(fileName.IndexOf('"'));
未经测试,但它应该有效。
编辑:我认为这可以做你想要的,但我可能误解了你的问题
答案 1 :(得分:1)
使用HttpWebRequest
并使用AllowAutoRedirect=true
获取直接链接并下载文件。
答案 2 :(得分:1)
您可以使用网络客户端执行网页请求以从该网址获取内容(网址),然后您只需执行重定向。
答案 3 :(得分:1)
您可以尝试将网址粘贴到像tinyUrl或BitLy这样的URl缩短程序吗?也许有一个提供API的缩短服务?
然后将该文件下载到:http://tinyurl.com/phzhxsr
您永远不会从站点所有者那里获得直接URL,因为URL是动态解析的,并且文件是使用retrun数据流发送的,而不是通过下载特定的URL。