[ad_1]
やあみんな!
システムのデフォルトのブラウザを開いて、カスタム URI POST データを送信する必要があります。 したがって、コードには 2 つの部分があります。1 つは def ブラウザを開き、もう 1 つは POST データをそれに送信する必要がありますが、実行しません。
それについて何と言えますか?
private void button1_Click(object sender, EventArgs e) { string browser = string.Empty; RegistryKey key = null; try { key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false); //trim off quotes browser = key.GetValue(null).ToString().ToLower().Replace("\", ""); if (!browser.EndsWith("exe")) { //get rid of everything after the ".exe" browser = browser.Substring(0, browser.LastIndexOf(".exe")+4); } } finally { if (key != null) key.Close(); } //open default system browser System.Diagnostics.Process.Start(browser, strURL.Text); //*************************************************** // Convert string data into byte array string strData = "Name=Sergiy&Age=21"; byte[] dataByte = Encoding.UTF8.GetBytes(strData); HttpWebRequest POSTRequest = (HttpWebRequest)WebRequest.Create(strURL.Text); POSTRequest.Method = "POST"; // Set the content type - Mine was xml. POSTRequest.ContentType = "application/x-www-form-urlencoded"; POSTRequest.KeepAlive = false; POSTRequest.Timeout = 5000; POSTRequest.ContentLength = dataByte.Length; // Get the request stream Stream POSTstream = POSTRequest.GetRequestStream(); // Write the data bytes in the request stream POSTstream.Write(dataByte, 0, dataByte.Length); //Get response from server HttpWebResponse POSTResponse = (HttpWebResponse)POSTRequest.GetResponse(); }
ありがとう!
解決策 2
このフォームをどこで実行するのか教えてください。
クライアント側でこれを行う場合は、JavaScript を使用してフォームを作成し、投稿する必要があります。
それ以外の場合は、サーバーに保存したい場合は、ブラウザを開いて投稿データのある場所に移動するだけです。 これが必要な場合は、Process.Start を使用して URL のみを呼び出すことができ、指定された場所に自動的に移動します。
一方、プログラム的に必要な場合は、WebRequest.Create を使用できます。
http://msdn.microsoft.com/en-us/library/debx8sh9.aspx[^]
WebBrowser を使用して応答のみを表示します。 この場合は、Process.Start を使用しないでください。
解決策 3
.NET を備えたコンピュータ上でアプリケーションを実行する必要があります。 ページアドレスとPOSTデータの2つのパラメータを取ります。 次に「開く」ボタンを押します。 そして、URL で DEFAULT ブラウザを開き、そこに POST パラメータを渡す必要があります。
ソースを見つけましたが、機能しません(コンパイルはできますが、反応しません:
// 投稿を受信できる URL を使用してリクエストを作成します。
WebRequest リクエスト = WebRequest.Create(strURL.Text);
// リクエストの Method プロパティを POST に設定します。
request.Method = “POST”;
// POST データを作成し、バイト配列に変換します。
string postData = “名前=セルギ&年齢=14”;
バイト[] byteArray = Encoding.UTF8.GetBytes(postData);
// WebRequest の ContentType プロパティを設定します。
request.ContentType = “アプリケーション/x-www-form-urlencoded”;
// WebRequest の ContentLength プロパティを設定します。
request.ContentLength = byteArray.Length;
// リクエストストリームを取得します。
ストリーム dataStream = request.GetRequestStream();
// データをリクエスト ストリームに書き込みます。
dataStream.Write(byteArray, 0, byteArray.Length);
// Stream オブジェクトを閉じます。
dataStream.Close();
// レスポンスを取得します。
WebResponse 応答 = request.GetResponse();
// ステータスを表示します。
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// サーバーから返されたコンテンツを含むストリームを取得します。
データストリーム = 応答.GetResponseStream();
// 簡単にアクセスできるように、StreamReader を使用してストリームを開きます。
StreamReader リーダー = 新しい StreamReader(dataStream);
// 内容を読みます。
文字列応答FromServer = Reader.ReadToEnd();
// 内容を表示します。
Console.WriteLine(responseFromServer);
// ストリームをクリーンアップします。
Reader.Close();
dataStream.Close();
応答.Close();
解決策 1
WebBrowser の自動ガイダンスや、機能の送信さえも難しいことではありません。
簡単なログインページがあるとします。ユーザー名とパスワードを入力し、「ログイン」ボタンをクリックしてログインします。 既知のユーザー名入力ボックス ID (または名前、以下同じ) がユーザー名、パスワード入力ボックス ID がパスワード、「ログイン」ボタン ID が submitbutton の場合、WebBrowser の DocumentCompleted イベントのみが必要です。次のコードを使用します。 :
HtmlElement btnSubmit = webBrowser.Document.All["submitbutton"]; HtmlElement tbUserid = webBrowser.Document.All["username"]; HtmlElement tbPasswd = webBrowser.Document.All["password"]; if (tbUserid == null || tbPasswd == null || btnSubmit == null) return; tbUserid.SetAttribute("value", "smalldust"); tbPasswd.SetAttribute("value", "12345678"); btnSubmit.InvokeMember("click");
ここでは、SetAttribute を使用してテキスト ボックスの「value」属性を設定し、InvokeMember を使用してボタンの「click」メソッドを呼び出します。 独自のプロパティとメソッドのさまざまな要素の HTML も異なります。 Net 2.0 は、同じ Html のさまざまな要素を要約するための統合された HtmlElement を提供します。また、要素固有の機能を呼び出す 2 つの方法が提供されます。 さまざまなプロパティとメソッドのリストにある HTML 要素については、MSDN の DHTML リファレンスにアクセスできます。
※ フォームで送信しますが、ボタンの代わりにフォーム要素にアクセスし、フォーム要素のメソッドを使用して送信する別の方法もあります。
HtmlElement formLogin = webBrowser.Document.Forms["loginForm"]; //…… formLogin.InvokeMember("submit");
[ad_2]
コメント