Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

POSTリクエストを送信し、レスポンスをブラウザで表示したい

以下のような動作を想定していますが、どのような方法で実現できますでしょうか。
?認証に必要なID、パスワードをパラメータとしてPOSTリクエストを送信する。
?レスポンスをブラウザで表示する。

HTTPClient等のライブラリを試してみましたが、ブラウザで表示する方法がわかりませんでした。

4

回答

292

閲覧

4件の回答

評価

0

大前提として、サーバーは要求を受けたクライアントにしかレスポンスを返さない。
要求したクライアント以外のアプリにレスポンスを表示したいなら、そのアプリに自力でレスポンスを読み込ませる必要がある。
ただし、それは「サーバーからのレスポンス」を表示するのではなく、要求したクライアントが蓄えている「ローカルデータ」を表示するに過ぎない。
それで良いのか…?

その上で、受けたレスポンスを一時フォルダに拡張子htmlで出力、Desktopクラスで実行すれば紐付けられたブラウザが起動するだろう。
これが一番簡単だと思うが、環境依存なので常にブラウザが起動するとは限らない。

評価

0

ご回答ありがとうございます。

「要求したクライアントが蓄えている「ローカルデータ」を表示する」のではなく、
ブラウザを経由してPOSTリクエストを送信し、レスポンスを表示する方法を探しておりました。

C#でいうところのNavigate関数に相当するものがJavaで実現できないでしょうか。

        public void GoIE_Sample()
        {
            string URL;
            string postString;
            object postData;
            object headers;

            var IE = new InternetExplorer();
            IE.Visible = true;

            URL = "https:example/test/";
            postString = "value1=999";
            postData = new ASCIIEncoding().GetBytes(postString);
            headers = "Content-Type: application/x-www-form-urlencoded";

            IE.Navigate(URL, null, null, postData, headers);
        }

評価

0

>C#でいうところのNavigate関数
「C#でいうところの」はInternetExplorerクラスだな。実体は言語非依存のCOMコンポーネントだから。
まあそれはともかく。

ブラウザを操作したいということか。Java単独で同じことはできない。
C#は基本的にWindows上で動作させる前提なので、Windows環境と強く紐付いており、Windowsに特化した様々な処理が可能になっている。
対してJavaは可能な限り環境非依存を目指しているため、特定の環境と強く紐付いた処理はサポートされない。

一応2つほど考えた。
1. JScriptまたはVBScript(C#のexeがあるならそれでも構わない)のProcessを生成する。
2. JNI、JNAのライブラリを作成する。
要するに、COMコンポーネントを生成して呼び出す部分はJava以外でということ。

別の考え方もできる。
HttpClientでもベタなURLでもいいので、取得したレスポンスをJEditorPaneに表示する。
ただ、JEditorPaneは基本的に表示のみで、イベント処理が必要なら自分で作り込まないといけないのと、
パーサがヘボなので古めのHTMLコードでないと崩れる可能性が高いのと。

評価

0

ご回答ありがとうございます。
参考にさせて頂きます。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名