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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Microsoft Edge

Microsoft Edgeは、マイクロソフト社が開発する新しいWebブラウザです。Windows 10から標準搭載されており、Internet Explorerとは違うレンダリングエンジンが採用されています。

C#

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

ウェブブラウザ

ウェブブラウザ(インターネットブラウザ)とは、www上に公開されている情報リソースをユーザーに視覚的提供・操作させる機能を持ったソフトウェアプログラムです。

Q&A

1回答

6474閲覧

C#のアプリケーションでブラウザ起動+URL指定+POSTを同時に行いたい

zegumi_japan

総合スコア12

Microsoft Edge

Microsoft Edgeは、マイクロソフト社が開発する新しいWebブラウザです。Windows 10から標準搭載されており、Internet Explorerとは違うレンダリングエンジンが採用されています。

C#

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

ウェブブラウザ

ウェブブラウザ(インターネットブラウザ)とは、www上に公開されている情報リソースをユーザーに視覚的提供・操作させる機能を持ったソフトウェアプログラムです。

0グッド

0クリップ

投稿2022/04/21 08:39

編集2022/04/21 08:47

●やりたい事ですが、C#で作成されたWindowsで動作するUI画面でボタンを押下すると、①ブラウザが自動で起動(規定のブラウザでOK)して、②指定されたURL(aspで作成されたページです)に対して③データをPOSTして、webサーバー側で受けたPOSTデータを解析して結果を起動したブラウザに表示する、です。

●実は現在、上記の動作は実際にシステムとして実現しており、Internet Exploer上で正常に動作しています。実現方法はInternetExplorerMediumを使用して、URLの指定とPOSTデータをNavigateメソッドに渡して上記の事が実現しています。

しかしこの度、IEのサポート終了に伴いEdgeで動作するよう改修が必要となりましたが、InternetExplorerMediumは当然使えなくなりますので規定のブラウザにEdgeを指定して(システム要件としてOKが出ています)そこに従来のIEで行っていた事をやる、となりました。
また、EdgeDriverというEdgeに特化したクライアント側のEdge操作ライブラリがMicrosoftより提供されていますが、各端末への配布の問題があり基本的にこれは使用しない前提での実装となります。

●こちらのサイトの例を参考に実装して実行し、指定したURLへPOSTしてレスポンスの中に期待した値が返却される事までは確認できましたが、当然ながらブラウザは起動せずにプロトコルとしてのPOST~RESPONSEのみの動作にとどまっています。

dobon.net POSTでデータを送信する
https://dobon.net/vb/dotnet/internet/webrequestpost.html

●InternetExplorerMediumを使用すれば都合よくブラウザ起動+URL指定+POSTデータの送出までが一気にできますが、これに代わって同じ事を実現する方法を知りたく。

ブラウザを自動起動させるためにはURLを指定してSystem.Diagnostics.Process.Start()とすれば規定のブラウザは立ち上がりますが、同時にPOSTする仕組みは当然なく、URLにクエリストリングでパラメータを付与するしか方法がありません。

今回URLとして指定されているaspで作成されたページはGETではなくPOSTでパラメータを要求しているため、クエリストリング方式では動作しないのです。よって、ブラウザ起動+URL指定+POSTを一回で完結させる方法があればお教えください。

※Javascriptなどでwebページ側にスクリプトを仕込んでGETしたパラメータを自力でPOSTする方法もありますが、今回はwebページ側は手を入れない前提でお願いします。

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

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

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

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

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

guest

回答1

0

※Javascriptなどでwebページ側にスクリプトを仕込んでGETしたパラメータを自力でPOSTする方法もありますが、今回はwebページ側は手を入れない前提でお願いします。

サーバー側には手を入れず、そういうJavaScript入りHTMLをローカルに持つというのは駄目なのでしょうか?

投稿2022/04/21 09:11

otn

総合スコア85766

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

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

zegumi_japan

2022/04/21 09:20

なるほど、いきなりaspページを指定せずにローカルにあるhtmlへのアクセスでブラウザ起動させた上で、scriptをブラウザ上で実行させてPOSTするという方法ですね。おそらくInternetExplorerMediumも内部ではそのような動きをしているものと想像していました。大変参考になりました、ありがとうございます。
muzeng

2022/04/25 05:53

C#でSystem.Diagnostics.Processを利用してEdgeをPost送信起動する仕組みを探して見ましたが、見つかりませんでした。 自分も同じ問題が遭いますが、上記の方法で試したところ、CORS違反エラーになるため、正常に動けないですが、そちらで解決案がありますか Access to XMLHttpRequest at 'http://xxx:8080/xx/doLogin' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
otn

2022/04/25 07:05

ヘッダを付ければ良いのでは? それともこの質問と状況が異なり自社システムでは無いということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問