- PR -

アプレットからPHPの起動

1
投稿者投稿内容
Maki
会議室デビュー日: 2004/04/23
投稿数: 9
お住まい・勤務地: Kanagawa
投稿日時: 2004-05-15 18:22
こんにちは、Makiです。

JAppletにロード済みの画像ファイルをサーバから削除させようと考えています。
アプレットからファイルを削除するためのPHPを起動させたいのですがうまくいきません。
phpの内容は単純にunlink()でファイルを削除させるものです。

try {
URL url = new URL("http://www.sample.jp/dispose.php");
url.openConnection();
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("GET");
huc.disconnect();
} catch (MalformedURLException me) {
} catch (IOException ie) {
}

この様に書いてみたのですがファイルは残ったままです。
単純にファイルを削除する為のPHPを起動させる方法を是非教えてください。
よろしくお願いいたします。

coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-05-17 04:18
openConnection()しただけでは、ダメです。
HttpURLConnection の仕様からは、どの時点でHTTPリクエストが発行されるか
明確ではありませんが、getInputStream() してやらないといけないのでは?
Maki
会議室デビュー日: 2004/04/23
投稿数: 9
お住まい・勤務地: Kanagawa
投稿日時: 2004-05-17 11:49
coasmさん、ご回答ありがとうございます。

引用:

coasmさんの書き込み (2004-05-17 04:18) より:
openConnection()しただけでは、ダメです。
HttpURLConnection の仕様からは、どの時点でHTTPリクエストが発行されるか
明確ではありませんが、getInputStream() してやらないといけないのでは?




CGIを起動させてデータのやり取りをするようなパターンではなく、
単純に画像ファイル削除用のPHPを起動させたいので、
敢えてI/Oの関係は記述しませんでした。

getInputStream()を早速試してみましたが、やはり削除はされませんでした。
単純にサーバ上の別のプログラムを起動させるということは可能でしょうか。
よろしくお願いいたします。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-05-17 13:01
URLConnectionの動作は、getContent() とか getInputStream() とか
getHeaderFields() 等、HTTPレスポンスを参照する必要のあるメソッドが
最初に呼び出された時点でHTTPリクエストを送るようになっているようです。

したがって、レスポンスの内容が不要な場合でも、I/Oの関係をまったくなくして
しまうと、HTTPリクエストが送信されなくなってしまいます。
(getInputStream() した後、readせずにcloseしてしまってもOKのようです)

getInputStream()してもダメだったとのことですが、
(1) リクエストがあったことは、webサーバのログに残っていますか?
(2) アプレット側で、例外をcatchしていませんか?
(3) 署名されていないアプレットは、アプレット(のjarファイル)を置いてあった
  サーバとしか通信できませんが、その点は大丈夫ですよね?
Maki
会議室デビュー日: 2004/04/23
投稿数: 9
お住まい・勤務地: Kanagawa
投稿日時: 2004-05-18 09:20
coasmさん、遅くなりましたが削除できました!!
ありがとうございました。

原因は、.phpにあり、
削除ファイルが存在するフォルダを確認せずにunlink()を使っていました

<URLConnectionの動作は、getContent() とか getInputStream() とか
<getHeaderFields() 等、HTTPレスポンスを参照する必要のあるメソッドが
<最初に呼び出された時点でHTTPリクエストを送るようになっているようです。

<したがって、レスポンスの内容が不要な場合でも、I/Oの関係をまったくなくして
<しまうと、HTTPリクエストが送信されなくなってしまいます。
<(getInputStream() した後、readせずにcloseしてしまってもOKのようです)

HTTPリクエストとgetInpuStream()の関係がよくわかり、
大変勉強になりました。
これからもうまく活用していきます!
本当にありがとうございました。
1

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