質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

10408閲覧

C# WebBrowserでForm内のSubmitをさせるのは、FormがPOSTかGETかによって方法が異なるのでしょうか?

GiveAHand

総合スコア286

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2016/06/29 17:43

あるサイトをC#のWebBrowserに表示させて、そのサイトのForm内のテキストボックスに自動で値を入れて、Submitをさせたいのですが、うまくいかなくて悩んでいます。

そのサイトのフォームはこのようなものです。

html

1<form action="/sample.php" method="POST" name="form"> 2 3 <input type="text" size="40" name="target"> 4 5 <input type="submit" value="開始" name="start"> 6 7</form>

このフォームのtaegetという名前のテキストボックスにテキストをセットして、submitさせたいのですが、テキストボックスに値はセットされるのですが、submitがされません。

テキストボックスにはこのように値をセットしました。

C#

1HtmlElementCollection forms = all.GetElementsByName("target"); 2forms[0].InnerText = "test";

submitはこのようにしました。

c#

1HtmlElementCollection forms2 = all.GetElementsByName("start"); 2forms2[0].InvokeMember("submit");

また、このやり方は、下記のページを参考にしたのですが、このページにある、Googleのページに関しましては、うまく動作しました。

WebBrowserコントロール内のテキストボックスに文字列をセットするには?[2.0、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/860controlwb/controlwb.html

違いがあるとすれば、GoogleのFormはGETですが、出来なくて困っているサイトのフォームはPOSTです。

C#のWebBrowserでPOSTのフォームのsubmitをさせるには、どうしたらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

WebBrowser > Navigate メソッドでPostDataを投げられますけど..

public void Navigate( string urlString, string targetFrameName, byte[] postData, string additionalHeaders )

パラメーター

  • urlString

読み込むドキュメントの URL。

  • targetFrameName

ドキュメントの読み込み先のフレームの名前。

  • postData

フォーム データなどの HTTP POST データ。

  • additionalHeaders

既定のヘッダーに追加する HTTP ヘッダー。

投稿2016/06/29 18:21

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GiveAHand

2016/06/30 05:24

dojikko様 ご回答ありがとうございます! ただ、Navigateでする場合、「targetFrameName 」と「additionalHeaders 」につきまして、何をどう設定すればいいのかがわかりません。 この2つには、一体何をどう設定(または、どうやって設定する値を調べたら)いいのでしょうか?
GiveAHand

2016/06/30 05:48

dojikko様 すいません。 上記の件ですが、他のサンプルのあるページなどを見まして、 targetFrameName = null string headers = “Content-Type: application/x-www-form-urlencoded\r\n” この設定でうまくいきました。 ありがとうございました!
picko

2016/06/30 06:00

興味あります。 postDataはどんな感じですか?
GiveAHand

2016/06/30 06:17

picko様 お世話になります。 postDataは、 string str_post = ""; str_post += "target=" + "sample"; このようにしました。
GiveAHand

2016/06/30 06:18

picko様 あ、すいません。 追伸です。 その後、 byte[] byte_post = Encoding.ASCII.GetBytes(str_post); このようにバイト変換して、セットしました。
picko

2016/06/30 06:19

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問