2013-10-24 121 views
0

我做了一個應用程序解析一個html文件,然後獲取一些url,問題是url只能直接從導航器下載。重定向url獲取直接url

在VB.NET或C#中,我如何重定向此URL以獲取直接鏈接,以便以後粘貼鏈接以將其下載到下載管理器中?

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

我必須說,我沒有太多的以http嘗試的事情,也許我錯了,並鏈接有什麼重定向或類似的東西的錯,請你只說我怎麼可以重定向那種網址或如果我錯了。

UPDATE:

試過,但我得到沒有任何變化一樣網址:

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 將包含其重定向到的地址。如果沒有,您必須閱讀 重定向標題並決定是否要求 新頁面。

所以...如果我需要做thatm,我可怎麼辦呢?

更新3:

DownloadThemAll插件的Firefox可以得到直接的網址...你可以看到所有.mp3文件擴展名的URL完成,這就是我需要

enter image description here

+1

能否請你澄清你是什麼意思「重定向URL獲得一個直接鏈接供以後粘貼鏈接」是什麼意思? –

+0

@AdamMoszczyński網址是用於下載一個MP3音頻文件,我希望如果我可以做重定向操作來獲取可能以文件名結尾的「真實網址」,例如:http://m.mrtzcmp3。 net/blahblahblah/file.mp3',這是我的直接鏈接,對不起,如果我認爲是錯誤的。 – ElektroStudios

+2

url也可能指向http處理程序,它將通過直接寫入響應來提供文件。它不必是那裏的「真正的網址」。 –

回答

3

據我所知,網址

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

是直接鏈接,直接文件的URL並不需要有文件類型在裏面。

你可以下載使用該文件

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); 

您可以通過使用

HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); 
string header = myHttpWebResponse.Headers.ToString(); 
fileName = header.Remove(0, header.IndexOf("filename=")+10); 
fileName = fileName.Remove(fileName.IndexOf('"')); 

是未經測試得到的文件名(麥當娜像一個處女-www.mrtzcmp3.net.mp3)但它應該工作。

編輯:我覺得這你想要做什麼,但我可能誤解了你的問題

1

使用HttpWebRequest並使用AllowAutoRedirect=true獲取直接鏈接並下載文件。

+0

但這並不能解決我的問題,我會在我的應用程序之外下載它,然後我不能使用HttpWebRequest來下載它或者WebBrowser控件,我只想獲得從其他應用程序下載它的直接鏈接。謝謝你的答案! – ElektroStudios

+1

如果您想要外部應用程序檢查我的更新。例如,使用process.start並將URL提供給Internet Explorer。 –

+0

我已經看到您的更新,但它是同樣的問題,我仍然沒有直接的網址,我管理大量的網址重定向 – ElektroStudios

1

您可以使用Web客戶端執行Web請求以從該URL獲取內容(url),然後您只需執行重定向。

+0

謝謝你,所以你的意思是我可以獲得像這樣的重定向網址嗎?,如果你在瀏覽器中調用url,我會在幾分鐘內嘗試它 – ElektroStudios

+1

,你可以得到的網址?如果是的話,你可以從webclient –

+0

得到它我試圖做的請求,但我沒有得到任何更改的網址,請看我的更新? – ElektroStudios

1

你可以嘗試將URL粘貼到像tinyUrl或BitLy這樣的URl縮寫器嗎?也許有一個提供API的簡短服務?

的文件,那麼將在以下網址下載:http://tinyurl.com/phzhxsr

你將永遠不能從網站的所有者直接的URL,因爲該URL dynamicaly解析,文件與retrun數據流發送,而不是通過下載特定的URL 。

+0

Thankyou,但我需要直接的網址,而不是一個縮寫,「你永遠不會從網站所有者獲得一個直接的網址,因爲......」我更新了我的問題,上傳一個圖片以顯示一個可以獲取直接網址的程序然後下載它們。 – ElektroStudios