2013-10-21 57 views
-1

在VB.net中如何在重定向後查看域的最終URL?

我有1k個域名。我每天都想檢查這些域是否正確重定向。有時候他們中的一個做得不好,或者不能重定向。

我使用了webclient,但它只給出了頁面的內容而不是最終的URL。

我想得到最終的網址

這些域使用服務器重定向。不是JavaScript重定向。所以在PHP服務器的操作位置:newurl.com

例如,

page = wc.DownloadString(URL) 

會給域的內容,而不是最終的URL

如果工作正常,domaina.com會重定向到無論是ww1.domaina.com或google.com

我想要一個功能

checkDomainRedirect(url as string)其中

checkDomainRedirect(網址爲串)產生ww1.domaina.com

+0

好吧1 downvote和一個關閉,沒有任何解釋爲什麼 –

+0

告訴我們你到目前爲止嘗試過什麼,希望我們可以提供幫助。 – elgonzo

+0

我使用了webclient。 –

回答

1

不要使用WebClient的用於這一目的,因爲你不能沒有覆蓋方法關閉AllowAutoRedirect那裏。

您的方案簡單多使用的HttpRequest,在那裏你可以(而且必須)關閉AllowAutoRedirect

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(myUrl); 
req.AllowAutoRedirect = false; 
HttpResponse resp = (HttpWebResponse) myHttpWebRequest.GetResponse(); 

要找出由的HttpRequest提供的HttpResponse是否包含重定向,檢查的StatusCode是否爲300,301,302或303(或甚至307,如果需要)。如果找到這樣一個StatusCode,請查看Location:標題以查找重定向URL。

string redirUrl = null; 

switch (resp.StatusCode) 
{ 
    case HttpStatusCode.MultipleChoices: 
    case HttpStatusCode.Redirect: 
    case HttpStatusCode.RedirectMethod: 
    case HttpStatusCode.MovedPermanently: 
    //case HttpStatusCode.TemporaryRedirect: 

     // Redirect found. Get the redirection URL from the Location: header 
     redirUrl = resp.Headers[HttpResponseHeader.Location]; 
     break; 
} 

如果已經找到了一個重定向的URL,它會被存儲在redirUrl變量。

+0

好吧,很酷。有沒有什麼辦法可以讓AllowAutoRedirect繼續保持最初的URL? –

+0

@Jim,你可以創建多個HttpWebRequest對象,你不必在你的軟件中只使用一個靜態對象。 – elgonzo

相關問題