2011-10-25 70 views
0

我已經獲取特定頁面的html代碼。 URL格式爲:在c#中發佈url並檢索html

http://www.externalwebsite.com/dir/page.html?p1=parameter1value&p2=parametervalue2

當我得到這個頁面的HTML代碼中有充滿p1和p2隱藏放慢參數值的列表,在查詢字符串之前寫的。然後有一個POST動作重定向到「/dir/page.html」:在這個頁面中有我需要的html內容。

有什麼辦法可以獲得「dir/page.html」的html內容嗎?

任何幫助真的很感激!

謝謝

我已經使用的StreamReader實現的GetResponseStream,但我得到這塊HTML的:

<form name="myForm" method="post" action="/dir/page.html" accept-charset="ISO-8859-1"> 
    <input type="hidden" name="p1" value="parameter1"> 
    <input type="hidden" name="p2" value="parameter2"> 
</form> 
+0

究竟是你想達到什麼目的?客戶端代碼是否填充隱藏字段? –

+0

我不知道隱藏域是如何填充的,因爲「externalwebsite」不是我管理的網站。 在任何情況下,我都會嘗試再次解釋事情進展如何: -用戶繼續http://www.externalwebsite.com/dir/page.html?p1=parameter1value&p2=parametervalue2 - 有關於http的POST操作://www.externalwebsite.com/dir/page.html與我需要得到的html代碼。 我想有一個會話/ cookie或其他「說」到網站「確定頁面已被正確調用,顯示html內容!」。 – matan

+0

您最好在應用程序中創建InternetExplorer實例並導航到頁面 - 這將模擬用戶體驗,然後您可以檢索所需的值。 –

回答

1

你想GetResponse。喜歡的東西..

HttpWebRequest request =   
    WebRequest.Create("http://www.externalwebsite.com/dir/page.html"); 
HttpWebResponse response = request.GetResponse(); 
StreamReader reader = New StreamReader(response.GetResponseStream()); 
string sHTML = reader.ReadToEnd(); 
+0

我已經實現了這段代碼。查看我剛剛在帖子中添加的詳細信息。謝謝:) – matan

1

你發出一個HTTP GET請求,但提交表單時,你必須發出一個HTTP PUT請求,其中包含兩個參數p1和p2的服務器。

可以使用WebRequestClassWebClient類和UploadValues方法來發送一個HTTP POST參數:

WebClient wc = new WebClient(); 
byte[] result = wc.UploadValues("http://www.externalwebsite.com/dir/page.html", 
           "POST", 
           new NameValueCollection 
            { 
             { "p1", parameter1 }, 
             { "p2", parameter2 } 
            }); 
+0

無事可做......我用hiddenfield html得到了相同的頁面(參考我在第一篇文章中寫的html代碼)。 – matan

+0

我會建議開始小提琴手,看看提交表單時,頁面的確切位置。也許在表單中有更多的字段。 – Jan