1

我有一個像「http://www.ti.com/lit/gpn/TPS767D318-Q1」 一個URL這是一個路徑最終被路由到「http://www.ti.com/lit/ds/ (在渲染一個pdf文件)上的「symlink/tps767d318-q1.pdf」。我正在控制檯應用程序中處理這個URL,以便獲取您在我提供的第二個URL中看到的「pdf」文件名。從虛擬URL獲取文件名?

我檢查的HttpResponse對象的UriResponse.Absoluteuri財產,它說: 「http://focus.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS767D318-Q1 &的fileType = PDF」 看起來像這是一個嵌套的虛擬路徑。任何人都可以幫助我在哪裏可以到達最終的URL來提取pdf文件的名稱?我沒有在響應對象的任何地方找到它。我也檢查了響應標題,也沒有任何內容。

任何幫助將不勝感激...謝謝

回答

1

常用的技術事實證明,我的問題的URL實際上是返回的HTML內容,並做了「元標記」重定向。所以我不得不做到以下幾點:

var redirect = Regex.Match(new string(buffer, 0, count), @"\<meta(?=[^>]*http-equiv\W*refresh)[^>]*?content\s*\=[^=>]*url\s*\=\s*(?<Url>[^'"">]+)", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

if (redirect.Success) 
{ 
    Uri uri = new Uri(new Uri(externalUrl, UriKind.Absolute), new Uri(redirect.Groups["Url"].Value, UriKind.RelativeOrAbsolute)); 
    return SaveUrlToTemporaryFile(uri.AbsoluteUri, needsFullDownload); 
} 

我得到最終的URL出從返回的HTML內容的meta標籤,然後再打電話給我下載的程序。

1

不知道有關ASP,但在協議級的初始請求可能會導致重定向到應用/服務器上的另一端發出,這樣你就可以看看最初的HTTP響應,並檢查它是否是重定向代碼,301,302等。如果是這樣,你可以按照302s,直到你達到200,這是你可以用來檢查文件名的最終URL。

1

看那Content-Disposition頭,它可能看起來像:Content-Disposition: attachment; filename=tps767d318-q1.pdf。這對於獲取Web服務和數據庫,從「下載」文件,網絡共享等

+0

是的,我檢查了它...它沒有文件名稱。響應中缺少「Content-Disposition」標題。奇怪... ContentType顯示爲'html'而不是'application/PDF'。我想知道它是否會重定向到pdf文件!!任何想法發生了什麼? – karry

+1

我會用Firebug或Fiddler來監視請求/響應;正如PlexQ提到的那樣,您可能會觸及服務器請求/響應對,因爲它會通過切斷「地點」來重定向您。 – CodingGorilla

+0

僅供參考...請參閱我更新的答案!謝謝您的幫助! – karry