2009-12-30 43 views
1

我想模擬WebTestRequest類的行爲(在Visual Studio的測試工具框架中),它可以根據從響應中引用的資源調用相關請求原始請求。解析HTTP Web響應中的相關請求

例如,如果我發出了一個網絡請求並獲得通過這樣的迴應:

string url = "http://www.mysite.com"; 
WebRequest request = WebRequest.Create(url); 
using (WebResponse response = request.GetResponse()) 
{ 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    string responseText = reader.ReadToEnd(); 
} 

我希望能夠解析responseText,看看是否有其他資源的任何請求(如爵士/ css文件,圖像等)

有沒有簡單的方法做到這一點?我不願手動執行此操作,因爲某些資源請求可能以編程方式設置,並且在直接的文本分析中可能不明顯。

回答

0

使用html/sgml解析器庫。我對Visual Studio不熟悉,但是有解析HTML的框架。找到一個並在API中查找與查找元素相關的內容。

+0

爲了清楚起見,我已經使用IHTMLDocument3接口爲html元素提取構建了一個文檔對象。根據回答,我更感興趣的是弄清楚我應該執行哪些相關請求。你知道一個能解決這個問題的html解析器嗎? – 2009-12-30 18:03:34

+0

聽起來就像你想要一個完整的web引擎。 Webkit就是這樣的事情。如果你真的需要那個,我不確定你是否這樣做,那麼你可以研究一下。對不起,我不能再有任何幫助。 – dlamotte 2009-12-30 18:37:36

0

我相當確定WebTestRequest本身只做一個「簡單的文本解析」來確定依賴請求,因爲它沒有javascript意識。所以,如果你要實現這些,那麼你的代碼將準確地模擬行爲。

以下是我能找到的,可以參考其他資源的HMTL 4規範的粗略地看一眼的元素列表,因此將需要解析:

  • <link href=
  • <img src=
  • <script src=
  • <iframe src=
  • <object data=
  • <area href=

不確定它是否詳盡無遺。

順便說一句,我很好奇你最終做了什麼。

編輯:

一些資源請求的可通過編程設置,可能不會很明顯在一個簡單的文本解析

它實際上不可能在某一時刻確定解析html響應的相關請求,我會舉一個例子:用Google Web Toolkit開發的任何東西。在我測試的最近GWT應用程序中,基本上有可解析的html - 所有內容都是從javascript運行的。提取明顯的路徑名(當可用時)甚至沒有用,因爲實際上條件邏輯選擇了某些依賴項而不是其他項。