- PR -

JavaからASPにPOST

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/05/31
投稿数: 6
投稿日時: 2005-07-12 22:54
はじめまして。

現在、Javaアプリケーションの開発を行っております。

JavaアプリケーションからASPを起動することは可能なのですが、
POSTでパラメタを渡す方法が分かりません。

不可能なのでしょうか?
ご存知の方がいらっしゃいましたら、
ご回答をよろしくお願いします。

JavaアプリケーションからASPを起動する方法は、
javax.jnlp.BasicServiceのshowDocument()メソッドを使用しています。

開発環境
OS:Windows 2003 Server
JDK : jdk1.5.0_02

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 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/05/31
投稿数: 6
投稿日時: 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) {
}
---------------------------------------------------------
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-13 12:20
なるほど。これはブラウザに対応したサービスなんですね。

GETで受けたパラメータを元にPOSTを行って値を返すようなプロキシ機能を
用意してみてはいかがでしょうか。
サーブレットに提示されたソースを実装して、
javax.jnlp.BasicServiceでは、そのサーブレットにアクセスするような感じです。
未記入
会議室デビュー日: 2005/05/31
投稿数: 6
投稿日時: 2005-07-13 13:33
かつのりさん返信ありがとうございます。

今実装しようとしていることが、
Javaアプリケーションが持つユーザー情報を、
ASPに渡して起動したいのです。

GETでサーブレットにアクセスするってことは、
URLの履歴やキャッシュが残ってしまいますよね?
また、ユーザー情報が見えちゃう気がするのですが。

また、そのURLをたたけばJavaアプリケーションから
だけでなくASPが起動可能になると思います。

POSTで渡すことができても、そのASPを起動することは
無理なのでしょうか・・・
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2005-07-13 21:21
引用:
POSTで渡すことができても、そのASPを起動することは
無理なのでしょうか・・・


起動ってどういう意味でしょうか?

どうもまだ私は、未記入さんが何がやりたいのかよくわかりません。
クライアント(javaアプリ)=== Web(IIS-ASP)ですか?
クライアント(ブラウザ) === Web(Servlet) == Web(IIS-ASP)とか?
ひょっとしてブラウザを自作ですか?

http://localhost/test.aspにpostしたとして、その結果はHTMLで返ってくるわけですよね。
それをブラウザで受け取ればブラウザ上に表示されるだけですし、プログラムで受け取れば、テキストな文字列(htmlのソース)が得られるわけです。

実際のブラウザでは、htmlのソースをパースして、画像ファイルとかCSSとかが指定されていればその数だけWebサーバに対してhttpリクエストをしてデータを取得して1ページ分を完成させ、全部のデータがそろってから表示します。
(ユーザから見れば、ブラウザが1回だけhttpのリクエストをしているように見えますけどね。)
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-13 22:01
私も益々わからなくなってきましたが、
javax.jnlp.BasicServiceはJavaで動いているクライアント向けのアプリケーションから、
ローカルのブラウザを起動して、指定のURLを開かせるサービスと思いました。
(デスクトップ向けのJavaは疎いので・・・)

で、このAPIで立ち上げたブラウザの表示がPOST後の状態にしたいという感じでしょうか。
(例えば、ASPのログインページにユーザ情報を送って、ログイン後の画面を開かせたいとか・・・)

ちなみにBasicServiceって、BasicServiceが直接ネットワーク処理を行っているのでしょうか。
ブラウザのアドレスバーにURLを入力してGOボタンを押すのと
同じ状態を作っているに過ぎないような気がするんですが、
もしそうなら、未記入の要望は無理ではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)