2013-07-30 88 views
4

ASP.NET MVC 4剃刀:自動從URI下載一個XML文件下載彈出

我在這已經工作了一點,所以我很抱歉,如果我失去了一些東西很明顯,但我確實會感謝可能提供的任何幫助。

簡而言之,我期望做的是使用C#從URI下載XML文件。它應該是非常簡單的,但是URI導致一個空白頁面,下載提示彈出窗口填充了一個動態創建的文件名。

由於其保密性,我無法提供URI,但這裏是我一直在玩的代碼。 (請原諒在這個問題上我的無知,這是我第一次嘗試了這樣的事)

byte[] data; 
using (WebClient Client = new WebClient()) 
{ 
    data = Client.DownloadData(uriString + fileString); 
} 
File.WriteAllBytes(dirString + fileString, data); 

我也試過:

using (WebClient Client = new WebClient()) 
{ 
    Client.DownloadFile(uriString + fileString, dirString + fileString); 
} 

說實話,這段代碼並沒有真正爲我工作。下載的文件不正確。這些XML文件似乎包含他們從其下載的網頁中的代碼,如果我嘗試像圖片一樣的東西,圖片就會被破壞。所以,再次,任何援助將不勝感激。

在此先感謝!

+0

'「XML文件似乎包含他們從下載的網頁中的代碼」' - 您確定URI是正確的嗎?它是您正在查找的實際文件的URI,還是僅顯示該文件的頁面?目標網站在提供文件之前是否需要進一步操作?如果URI很敏感,您能提供一個我們可以看到的平等例子嗎? (此外,這與ASP.NET,MVC 4和/或Razor有什麼關係?) – David

+0

您好,感謝您的快速回復。該URI導致一個空白頁面,爲該文件啓動一個下載彈出窗口。以前我們會手動從這個彈出窗口下載文件,但是,我試圖自動化該過程以提高易用性。當我找到一些行爲相同的東西時,我會發佈一個鏈接。我提到了ASP.NET等,以防萬一它可能是重要的信息,有時我看到修復需要一些JavaScript或類似的東西。 – sabastienfyrre

+0

'「一個啓動下載彈出窗口的空白頁面」 - 我很好奇這個「彈出」是什麼,以及內容如何被實際服務。你可以做的一件事是在一些瀏覽器調試工具(如Firebug或Chrome開發者工具)中捕獲實際的HTTP請求和響應,並查看這種交互實際正在做什麼。你正在尋找的是一個HTTP響應,它只是文件內容本身,但它聽起來像是一些HTML,它以某種方式啓動對文件的第二個請求。 – David

回答

0

您使用的URI可能是錯誤的。您正在使用打開彈出頁面的URI。彈出頁面應該對動態生成的文件做另一個GET。

要使此過程自動化,您應該使用WebRequest來獲取彈出頁面的內容。颳去頁面的內容以獲取下載文件的實際URL。然後使用您編寫的代碼下載文件。

var request = WebRequest.Create("PopupUrl"); 
var response = request.GetResponse(); 
string url = GetUrlFromResponseByRegExOrXMLParsing(); 
var client = new WebClient(); 
webClient.DownloadFile(url, filePath);