2011-04-21 94 views
1

這是一個兩部分問題。是否有可能通過使用WebClient/HttpWebRequest從通過javascript動態加載內容的頁面檢索數據?HttpWebRequest與從JavaScript中動態生成html的頁面?

我還想如何能夠使用WebClient/HttpWebRequest來複制XMLHttpRequest,就像您會看到通過JavaScript執行的一樣。

編輯: 我所捕獲的請求的我試圖複製它看起來像這樣的標題: http://www.tagged.com/api/?application_id=user&format=json&session_token=6thk20fhv7d727emgdhfka6034

POST/API/APPLICATION_ID =用戶&格式= JSON & session_token = 6thk20fhv7d727emgdhfka6034 HTTP/1.1 主持人:www.tagged.com

接受:text/html的,是application/xhtml + xml的,應用/ XML; q = 0.9,/; q = 0.8 接受語言:EN-US,EN; q = 0.5

接受編碼:gzip,放氣

接收字符集:ISO-8859-1,utf-8; Q = 0.7,*; Q = 0.7

X-請求-隨着:XMLHttpRequest的

內容類型:application/x-www-form-urlencoded;字符集= UTF-8

的Content-Length:88

connect_status = -1; __utmb = 50703532.0.10.1303366930

DNT:1個

連接:保持活着

附註:無緩存

緩存控制:無緩存

方法= tagged.usermgmt .addFriend & uid_to_add = 5402501977 & api_signature = & track = 1mJ0lY7-W3

我明白一切,直到方法。據我所知,你只能提供GET或POST到HttpWebRequest.Method。有人可能爲我填補空白嗎?

+0

你是指「從通過javascript動態加載內容的頁面檢索數據」是什麼意思?你想通過HttpWebRequest調用從URL加載內容嗎? – 2011-04-21 06:52:13

回答

2

如果您嘗試以與javascript相同的方式與服務器通話,但您可能有一些選項。

首先,您必須確定這些頁面如何與服務器進行通信。例如,JSON或SOAP。您可以使用網絡嗅探器(如wireshark)來執行此操作。

完成此操作後,您可以使用其中一個可用的C#JSON解析器(如JSON.NET)解析JSON響應,向您的服務器發送JSON請求。

在SOAP的情況下,您可以使用類似的方法。注意他們可能不喜歡你以這種方式與他們的API交談。

2

是否有可能通過使用WebClient/HttpWebRequest從通過javascript動態加載內容的頁面檢索數據?

都能跟得上 - 你可以檢索所有需要JavaScript文件和其它文件的執行 JavaScript的,但HttpWebRequest類不執行該JavaScript的你 - 這是一個完全更復雜的任務。

如果你想這樣做,那麼你可以在你的應用程序中託管一個Web瀏覽器,打開瀏覽器並「渲染」頁面,然後檢查結果。但是,通常情況下,僅僅根據情況提出一種替代解決方案就比較容易,例如,如果JavaScript從AJAX請求填充頁面,然後直接自行運行請求。

我可以使用WebClient/HttpWebRequest複製一個XMLHttpRequest,就像你會看到通過JavaScript執行?

如果你的意思是「我可以用HttpWebRequest執行類似於客戶端的JavaScript執行的AJAX請求的HTTP請求」,那麼答案是肯定的,但究竟如何做到這一點,將取決於所使用的JavaScript和參數以執行AJAX請求。

在這種情況下,Web調試工具(如Fiddler)很有用,因爲它允許您檢查和比較正在進行的請求。

+0

@FoxyGT評論不夠大,也沒有正確的格式 - 你可以編輯原始文章嗎? – Justin 2011-04-21 07:11:19

+0

我已更新我的帖子。 – FoxyGT 2011-04-21 07:25:36