2012-10-20 29 views
0

好了,所以我問了一個問題提早了一個使用Webclient用戶代理不斷重置。需要Internet Explorer的

webclient.downloadfile($url,$path) 

我無法打開PDF文件,因爲它是不正確編碼。 我現在知道的是,這是因爲該網站只允許使用Internet Explorer。因此,我從來沒有真正下載PDF,而是一個HTML頁面..作爲PDF。因此錯誤。對於網站,當使用任何其他網站時,會彈出一個讓您知道的頁面。我發現當我用:

$webclient.downloadstring($url) 

..和通過幾行字在Powershell ISE閱讀,跨越同一句話來:「不兼容檢測瀏覽器必須使用IE 7.0及以上」

好的。所以我做了一些研究並瞭解了這個.AddHeader()函數。我使用了以下內容。

$wc.Headers.Add("user-agent", "Windows-RSS-Platform/2.0 (MSIE 9.0; Windows NT 6.1)") 

其實在這個網站上。我認爲這將欺騙網站認爲我正在使用Internet Explorer 9.0。我在$webclient輸入查看我Net.webclient對象的所有屬性和讀

Headers: {user-agent} 

甜我說。現在它會工作。但後來我嘗試了我的.downloadfile函數,併發生了同樣的事情。 運行我的downloadfile後,我再次檢查了$webclient的屬性和Headers= {}我的user-agent發生了什麼?任何人都可以讓我知道爲什麼會發生這種情況,或者提供任何提示讓它正常工作?

+0

如果您包含一些代碼來重現您遇到的問題(概念驗證),它也將有所幫助。 – Neolisk

回答

0

這很正常 - 在WebClient首次調用後,標題正在重置。所以任何後續的調用都會讓它們變空。這裏有一個proof link from msdn.microsoft.com

用相同的Web客戶端重複調用casues 404 我們發現,使用Web客戶端所做的第二個(和後續)調用失敗。 這是因爲任何頭文件都丟失了。因此,您需要確保在每次調用同一WebClient實例之前重置您使用的自定義標頭 。

+0

哦,我明白了。那麼在那種情況下,我不知道爲什麼這不起作用。該死的網站仍然無法識別IE瀏覽器。我使用另一個IE9的標頭,我從MSDN中脫身。沒有。該網站和文件都是**。aspx **,如果這很重要的話。 –

+0

@JohnnyFlowers:請澄清你的問題。我認爲你的問題是'Headers'在執行'downloadfile'後會被清除。 – Neolisk

+0

那麼我的主要問題是,我試圖從一個只接受IE7 +的網站上下載文件。它是一個** aspx **文件,將以PDF格式打開。使用** webclient **我試圖從網站上下載URL,而不是存儲PDF,它是一個網頁的HTML代碼,它說:「檢測到不兼容的瀏覽器,請使用IE7或更高版本」 –

相關問題