- - PR -
JavaからASPにPOST
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-12 22:54
はじめまして。
現在、Javaアプリケーションの開発を行っております。 JavaアプリケーションからASPを起動することは可能なのですが、 POSTでパラメタを渡す方法が分かりません。 不可能なのでしょうか? ご存知の方がいらっしゃいましたら、 ご回答をよろしくお願いします。 JavaアプリケーションからASPを起動する方法は、 javax.jnlp.BasicServiceのshowDocument()メソッドを使用しています。 開発環境 OS:Windows 2003 Server JDK : jdk1.5.0_02 | ||||
|
投稿日時: 2005-07-13 00:18
ASPを起動っていうのは、何を意味しているのでしょうか?
IISの起動でしょうか?GETで送信しているといことでしょうか? (多分質問の内容からするとURLだけでアクセスしている感じかな・・・) WEBアプリケーションに対して要求する時には 一般的にHTTPと言うプロトコルを使用しますので、 IEでもi-modeでもJavaでもHTTPでリクエストの送信ができれば何でもOKです。 Javaでは一般的にjava.net.HttpURLConnectionを使います。 HTTPのメソッドの指定を行えばPOSTでもGETでも何でもできます。 | ||||
|
投稿日時: 2005-07-13 10:11
説明が不足していて申し訳ありません。
下記がURLConnectionでPOSTを試みたソースになります。 InputStreamには、HTMLが返ってきました。 しかし、これをブラウザに表示する方法が分かりません。 今までは、showDocumentを使用して指定したASPをブラウザに 表示していましたが… ------- Javaソース ------------------------------------- String strUrl = "http://localhost/test.asp"; URL url = new URL(strUrl); String query = URLEncoder.encode("message=テスト"); int cl = query.length(); try { URLConnection uc = url.openConnection(); uc.setDoOutput(true); uc.setDoInput(true); uc.setAllowUserInteraction(false); uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); uc.setUseCaches(false); DataOutputStream dos = new DataOutputStream(uc.getOutputStream()); dos.writeBytes(query); dos.flush(); dos.close(); DataInputStream dis = new DataInputStream(uc.getInputStream()); StringBuffer str = new StringBuffer(); String nextline; while((nextline=dis.readLine())!=null){ str.append(nextline+"\n"); } dis.close(); } catch (Exception ex) { } --------------------------------------------------------- | ||||
|
投稿日時: 2005-07-13 12:20
なるほど。これはブラウザに対応したサービスなんですね。
GETで受けたパラメータを元にPOSTを行って値を返すようなプロキシ機能を 用意してみてはいかがでしょうか。 サーブレットに提示されたソースを実装して、 javax.jnlp.BasicServiceでは、そのサーブレットにアクセスするような感じです。 | ||||
|
投稿日時: 2005-07-13 13:33
かつのりさん返信ありがとうございます。
今実装しようとしていることが、 Javaアプリケーションが持つユーザー情報を、 ASPに渡して起動したいのです。 GETでサーブレットにアクセスするってことは、 URLの履歴やキャッシュが残ってしまいますよね? また、ユーザー情報が見えちゃう気がするのですが。 また、そのURLをたたけばJavaアプリケーションから だけでなくASPが起動可能になると思います。 POSTで渡すことができても、そのASPを起動することは 無理なのでしょうか・・・ | ||||
|
投稿日時: 2005-07-13 21:21
起動ってどういう意味でしょうか? どうもまだ私は、未記入さんが何がやりたいのかよくわかりません。 クライアント(javaアプリ)=== Web(IIS-ASP)ですか? クライアント(ブラウザ) === Web(Servlet) == Web(IIS-ASP)とか? ひょっとしてブラウザを自作ですか? http://localhost/test.aspにpostしたとして、その結果はHTMLで返ってくるわけですよね。 それをブラウザで受け取ればブラウザ上に表示されるだけですし、プログラムで受け取れば、テキストな文字列(htmlのソース)が得られるわけです。 実際のブラウザでは、htmlのソースをパースして、画像ファイルとかCSSとかが指定されていればその数だけWebサーバに対してhttpリクエストをしてデータを取得して1ページ分を完成させ、全部のデータがそろってから表示します。 (ユーザから見れば、ブラウザが1回だけhttpのリクエストをしているように見えますけどね。) | ||||
|
投稿日時: 2005-07-13 22:01
私も益々わからなくなってきましたが、
javax.jnlp.BasicServiceはJavaで動いているクライアント向けのアプリケーションから、 ローカルのブラウザを起動して、指定のURLを開かせるサービスと思いました。 (デスクトップ向けのJavaは疎いので・・・) で、このAPIで立ち上げたブラウザの表示がPOST後の状態にしたいという感じでしょうか。 (例えば、ASPのログインページにユーザ情報を送って、ログイン後の画面を開かせたいとか・・・) ちなみにBasicServiceって、BasicServiceが直接ネットワーク処理を行っているのでしょうか。 ブラウザのアドレスバーにURLを入力してGOボタンを押すのと 同じ状態を作っているに過ぎないような気がするんですが、 もしそうなら、未記入の要望は無理ではないでしょうか。 |
1