2010-07-28 46 views
4

,我會很高興,如果有人能告訴我如何通過SHDocVw.IWebBrowserApp發送帶有導航方法POST數據,提供一個很好的例子。IWebBrowserApp.Navigate()如何發送POST數據

例如考慮。

該頁面是我們應該走的是:http://example.com/check.php

而且應該向兩個名爲輸入字段的值:用戶名和密碼。

編輯

我和我的C#應用​​程序試圖使用本地的Internet Explorer 7或更高版本,適用於Windows操作系統,一個HTTP請求發送到特定的URL,使用POST方法傳遞將用戶的用戶名和密碼發送到處理HTTP響應的服務器端頁面。

IWebBrowserAppNavigate方法我能夠打開一個新的窗口/ Internet Explorer的實例,並將其發送到特定的頁面(本地或在網絡),如果指定也發送POST數據和自定義標題。

但它的主要問題是,我不知道如何將我的數據寫入POST請求由瀏覽器攜帶。

我將不勝感激幫助。

+1

ábio:沒有理由在標題和標籤中加入「C#」。請將它留在標籤中。 – 2010-07-28 01:26:05

+1

@Jonh Saunders:當然,你對我的問題有什麼建議嗎? – 2010-07-28 01:45:23

回答

9

我發現如何訂購IE打開一個網頁,發送一些POST數據。

  • 添加一個名爲的Microsoft Internet Explorer控制到項目中的COM參考。

  • 然後創建post string與場和它的值由&分離,然後轉換該stringbyte array

  • 而在剛剛結束不得不要求IE導航到url,也發送POST數據轉化爲byte array,然後添加它,當我們提交表單中添加相同的標題。

這裏所說:

using SHDocVw; // Don't forget 

InternetExplorer IEControl = new InternetExplorer(); 
IWebBrowserApp IE = (IWebBrowserApp)IEControl; 
IE.Visible = true; 

// Convert the string into a byte array 
ASCIIEncoding Encode = new ASCIIEncoding(); 
byte[] post = Encode.GetBytes("username=fabio&password=123"); 

// The destination url 
string url = "http://example.com/check.php"; 

// The same Header that its sent when you submit a form. 
string PostHeaders = "Content-Type: application/x-www-form-urlencoded"; 

IE.Navigate(url, null, null, post, PostHeaders); 

注:

要嘗試,如果這個工程。不要忘記,你的服務器端頁面將不得不寫/回聲名爲:用戶名和密碼的郵政領域。

PHP代碼示例:

<?php 
echo $_POST['username']; 
echo " "; 
echo $_POST['password']; 
?> 

ASP代碼示例:

<% 
response.write(Request.Form("username")) 
response.write(" " & Request.Form("password")) 
%> 

和頁面將顯示是這樣的:

晶圓廠io 123