2010-04-16 83 views
1

我有一個webrequest,它返回一個html響應,裏面有一個隱藏的字段,裏面有一些在頁面加載時自動提交表單的javascript(如果這是在瀏覽器中運行的)。如何從.NET代碼運行javascript?

如果我將這個文件保存爲* .html並在瀏覽器中運行此文件,那麼java腳本代碼會自動發佈表單並且輸出爲excel文件。

我希望能夠從未在broswer中運行的c#代碼生成此文件(excel)。

我試圖嘲諷thr形式的帖子,但它的複雜和有基於原始webrequest查詢字符串的各種情況。任何指針....我知道它不可能運行JS代碼張貼表單 - 從C#代碼,但仍然認爲如果有人已經這樣做chekcing。

+0

雖然你想在C#代碼中生成文件嗎? Excel或從Web請求返回的HTML? – TheGeekYouNeed 2010-04-16 00:40:08

+0

當你說「我想能夠生成這個文件...」時,你的意思是HTML文件還是Excel文件? – MusiGenesis 2010-04-16 00:40:33

+0

不準確的語言不會長時間存在! :) – MusiGenesis 2010-04-16 00:41:08

回答

4

如果我正確理解你的問題,你的web服務中的代碼將返回一個包含javascript的HTML文件,該文件將表單發佈到返回Excel電子表格的某個位置。我有這個權利嗎?

當您的代碼變爲Rube Goldberg machine時,您可能需要重構一點。您是否有任何理由不能將您的原始Web請求寫入以返回Excel電子表格(裁剪多箇中間人)?

更新:對不起Rube Goldberg的破解 ​​- 我想我現在明白你的情況了。

爲了這個目的,我會遠離WebBrowser,因爲它比複雜機器中的可靠鏈接更有趣,但危險的玩具。基本上,您真正需要在這裏執行的是解析從您的初始Web請求返回的HTML並提取表單值,然後在代碼中構建自己的表單並將其提交給返回Excel電子表格的Web服務。返回的HTML中的JavaScript實際上並不重要,因爲它的唯一目的是從瀏覽器提交表單值。

Html Agility Pack看起來是一個很好的選擇(我從來沒有用過它,但它似乎是StackOverflow上這種類型的問題最常見的答案)。

+0

好問題 - 是的,原因是webrequest是以這種方式返回響應的供應商產品。 – dotnetcoder 2010-04-16 17:48:50

1

您可以使用WebBrowser控件與IE中的頁面進行交互。

請注意,它會很慢。

+0

我的c#代碼在windows服務中。我是否需要打開任何視覺形式的webbrowser控件,或者只是它的實例會起作用? – dotnetcoder 2010-04-16 00:40:38

+0

如果您正在服務中運行,這將無法可靠地運行(但您仍可以嘗試)。祝你好運! – SLaks 2010-04-16 00:44:48

1

如果您知道JavaScript代碼(您可以使用,因爲您可以訪問HTML),您可以分析它並找出將什麼值發佈到返回Excel工作表的Web服務。如果您知道這一點,只需使用C#發佈相同的值,即可獲得相同的表單。命名空間可能可以幫助你,雖然我從來沒有嘗試過這個,所以我不確定。

+0

認爲,但沒有多少運氣。字段的組合是動態的,所以需要做運行時分析。 – dotnetcoder 2010-04-16 01:00:38

+0

@dotnetcoder:儘管如此,你也許可以使用正則表達式或其他東西來找到HTML文件中的參數,然後自己做這個帖子,而不是搞清楚運行javascript的方法。 – 2010-04-17 10:18:03