重定向网址以获取直接网址

时间:2013-10-24 07:26:01

标签: c# .net vb.net url url-redirection

我做了一个解析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   将包含重定向到的地址。如果没有,你必须阅读   重定向标题并决定是否要求   新页面。

所以......如果我需要这样做,我该怎么做?

  

更新3:

用于Firefox的

DownloadThemAll插件可以获取直接网址...因为您可以看到所有网址都以.mp3文件扩展名完成,这就是我需要的内容

enter image description here

4 个答案:

答案 0 :(得分:3)

据我所知,网址

  

http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033

是直接网址,直接文件网址不需要包含文件类型。

您可以使用

下载文件
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。