4

を介して利用できるNavigateメソッドを使用してPOSTデータを送信する方法の良い例を誰かが教えてくれたらとてもうれしいですSHDocVw.IWebBrowserApp

たとえば考えてみましょう。

私たちが行くべきページは次のとおりです:http ://example.com/check.php

また、usernameとpasswordという名前の2つの入力フィールドの値を送信する必要があります。

編集

C#アプリで、WindowsOSで利用可能なネイティブのInternetExplorerバージョン7以降を使用して、HTTPリクエストを特定のURLに送信し、POSTメソッドを使用してユーザーのユーザー名とパスワードをサーバー側に渡そうとしています。 HTTP応答を処理するページ。

この方法を使用IWebBrowserAppすると、NavigateInternet Explorerの新しいウィンドウ/インスタンスを開いて特定のページ(ローカルまたはWeb内)に送信できます。指定されている場合は、POSTデータとカスタムヘッダーも送信できます。

しかし、主な問題は、ブラウザで実行するPOSTリクエストにデータを書き込む方法がわからないことです。

助けていただければ幸いです。

4

1 に答える 1

9

IEにWebページを開いてPOSTデータを送信するように注文する方法を見つけました。

  • Microsoft InternetExplorerControlsという名前のCOMリファレンスをプロジェクトに追加します。

  • 次にpost string、フィールドとその値をで区切ってを作成し&、それをに変換しstringますbyte array

  • そして最後に、IEにナビゲートするように要求しurl、投稿データをに変換し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);

ノート:

これが機能するかどうか試してみてください。サーバー側のページでは、usernameとpasswordという名前のPostフィールドを書き込む/エコーする必要があることを忘れないでください。

PHPコード例:

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

ASPコード例:

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

そして、ページには次のようなものが表示されます。

ファビオ123

于 2010-07-28T17:54:02.867 に答える