喫茶XRAYトップページ

[スレッド全体
]

[11227] PostメソッドでPostURLにデータを送る について返信 削除
2017/7/3 (月) 00:55:02 sato
いつもお世話になります。
これまで、患者IDをサーバーにGETメソッドで送り、検査結果を以下の
様にデフォルトにブラウザー上に表示するという運用を行っていました。
  url:='http://kensasvrkekka/pgm-cmdline.php?karute='+PID;
  ShellExecute(Handle,'open',PChar(url),'','',SW_SHOWDEFAULT);
ところが、今後アクセスはGETでなくセキュリティ上POSTで送信する
ように変更するとべンダーから通知がありました。

775_Indy_HTTPSendData を参考にしてPostメソッドでデータを
引数で渡すところまでは出来、
    //サーバからのデータを表示
    Memo1.Lines.Add(ResStream.DataString);
で受け取ることは出来ました。
ただ、検査結果の表示にはJavaAppletを使用するため、結果を
デフォルトのブラウザー上に表示したいのですが、ヒントだけでも
頂けないでしょうか。


[11228] Re:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/3 (月) 17:27:16 SO
▼ satoさん

レスポンスされたHTMLデータを保存して、
ブラウザを開いて閲覧することが出来るでしょうか?

CSRF等のセキュリティ対策がされていた場合、
閲覧できないと思いますが、どうでしょうか?

閲覧できない場合、ブラウザを操作してやるべきかと...?

[11229] Re2:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/4 (火) 14:10:04 sato
▼ SOさん
ありがとうございます。

> レスポンスされたHTMLデータを保存して、
> ブラウザを開いて閲覧することが出来るでしょうか?

一旦、保存したファイルをブラウザで開くと、最初の画面の
表示は正確にできますが、どうやらカレントディレクトリがローカルに移るのが
いけないらしく(この辺りは、知識がないのでよく分からないのですが)
リンク先などが見つけられなくて、その先の操作ができません。

>CSRF等のセキュリティ対策がされていた場合、
閉じたネットワークなのでその点は大丈夫のようです。
 
> 閲覧できない場合、ブラウザを操作してやるべきかと...?
ブラウザから直接POSTメソッドでパラメータを送信する方法が分かりません。
GETだと簡単だったのですが.....
なにしろ、乏しい知識なのでご迷惑をおかけします。

[11230] Re3:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/4 (火) 14:37:55 SO
▼ satoさん

> >CSRF等のセキュリティ対策がされていた場合、
> 閉じたネットワークなのでその点は大丈夫のようです。


認証とかしなくてOKのようですね。


> > 閲覧できない場合、ブラウザを操作してやるべきかと...?
> ブラウザから直接POSTメソッドでパラメータを送信する方法が分かりません。
> GETだと簡単だったのですが.....
> なにしろ、乏しい知識なのでご迷惑をおかけします。


マスターの記事に有用なものがあります。
http://mrxray.on.coocan.jp/Delphi/plSamples/940_TWebBrowserAndIE.htm
http://mrxray.on.coocan.jp/Delphi/plSamples/941_IEObject_InputClick.htm

DocumentにFormタグ作って、submitすればいけそうですね。

[11233] Re4:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/6 (木) 17:03:08 sato
▼ SOさん
ありがとうございました。
WEbBrowserの引数PostDataにセットすることで、パラメータを送ることができ、
うまく表示できるようになったのですが、一難去ってまた一難。
FormのWEbBrowse上に表示されている画面の印刷ボタン押下で
<INPUT TYPE="BUTTON" .....印刷.....OnClick="return ResultPrintForm()">
というソースのところで、
HTTPステータス500-java.lang.NullPointerExceptionという、javaのエラーがでます。
同じurlに対してブラウザで表示したときの印刷ボタンでは正常に印刷されます。
もうすこし、考えてみます。非力が身に沁みます。




[11235] Re5:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/7 (金) 07:55:35 SO
▼ satoさん
> ▼ SOさん
> ありがとうございました。
> WEbBrowserの引数PostDataにセットすることで、パラメータを送ることができ、
> うまく表示できるようになったのですが、一難去ってまた一難。
> FormのWEbBrowse上に表示されている画面の印刷ボタン押下で
> <INPUT TYPE="BUTTON" .....印刷.....OnClick="return ResultPrintForm()">


マウスクリックでエラーとなるのですか?


ResultPrintForm()は、マスターの記事にてリンクしている方法で解決できませんか?

http://www.delphidabbler.com/articles?article=21

[11236] Re6:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/7 (金) 18:02:15 sato
▼ SOさん
お世話になります。まだ解決していませんが、
「:PostメソッドでPostURLにデータを送る について」とは少し事情が
変わってきたので中間報告です。
現状の問題点は、WEbBrowserの引数PostDataにパラメータをセットして、
WEbBrowser.Navigate(.......)と送信し、結果をWEbBrowseに表示
した場合には、jspで動く「印刷」ボタンを押した時にjavaのエラーが
出るのですが、同じurlをIEで表示した場合は正常に動作します。
WEbBrowser上のHTMLの動作とIE上での動作が違う原因が分かりません。
というものです、もう少し調べてみます。

[11237] Re7:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/7 (金) 18:19:15 SO
▼ satoさん

>[11233] FormのWEbBrowse上に表示されている画面の印刷ボタン押下で

と書かれていたので、TWebBrowserに変更したかと思ってました。

IE限定でいくなら、IEオブジェクトに HTML(FORMタグ)をセットしてPOSTすればよいかと思います。

http://mrxray.on.coocan.jp/Delphi/plSamples/941_IEObject_InputClick.htm

[11258] Re8:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/11 (火) 16:55:59 sato
▼ SOさん
お世話になります。
書き方がまずかったようですのでもう一度整理しました。
1.これまで、urlにGetメソッドで引数を渡し、IEで結果を表示していました。
  ShellExecute(Handle,'open',PChar(url),'','',SW_SHOWDEFAULT);
2.サーバーの仕様が変わり、Postメソッドで引数を渡すように変更されたが、
 Postメソッドで引数を渡しながらIEを起動する方法が分からなかったので
3.WEbBrowserの引数PostDataにパラメータをセットして、
 WEbBrowser.Navigate(....)で開くとIEで表示したのとまったく同じに表示された。
4.ところが、WEbBrowser上に表示されている、jspで動く「印刷」ボタンを押した
 時にjavaのエラーが出る。(これは、WEbBrowserに変えてOleContainerを
 使っても同じくエラーになる)IEオブジェクトによって動作が異なるのでしょうか
5.疑問は、jspで動くボタンの挙動が、IEそのものの画面とWEbBrowser上とでは
 どうして違うのかという事です。
6.最終的には、ボタンの動作が正常にできるなら、WEbBrowserで表示させたいの
 ですが、エラーを防げないなら、IEでもいいのですが、
 Getメソッドで引数を渡しながら、IEを起動させる方法がいまだに分かりません。

[11263] Re9:PostメソッドでPostURLにデータを送る について返信 削除
2017/7/11 (火) 19:57:50 SO
▼ satoさん

お二方が既にレスしていますので、ココだけ。

スクリプトエラーというのは、ResultPrintForm()のエラーでしょうか?
であるなら、Javascriptになっているはずなので、
コードをココに貼り付けることはできますか?
場合によっては、Javascriptでやっていることを自前でやることで解決するかも?

エラー箇所が分からない場合、
takaさんの「IEで問題のURLを開いて、F12キーを押しデバッグする」にて確認してください。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82