URLをJEditorPaneまたはJTextPaneにロードしようとしていますが、URLは動的に生成されたPHPページです。次に、JavaアプリケーションでPHPページからの出力を処理したいと思います。PHPページは、正しく生成されたことを確認するために使用できる文字列を常に少なくとも1つ出力します。
を使用してページを設定した直後にページを処理しようとすると
JEditorPane.setPage(URL);
if( outputTracker.getText().contains("desktop_process") )
JEditorPaneにテキスト/プレーンコンテンツタイプを指定しても、空白のHTMLページが返されます。
System.out.println(outputTracker.getText() );
これは、以下のメソッドが毎回正しい出力を返すため、PHPページの読み込みが完了していないためだと思います。
現時点では、ページを設定してからSwingタイマーを開始し、200ミリ秒ごとにページに正しく生成された文字列が含まれているかどうかを確認しています。
private void getPageBtnActionPerformed(java.awt.event.ActionEvent evt) {
outputTracker.setPage("URL_GOES_HERE?variables=x&y=a");
check_response_timer.start();
}
ActionListener checkAction = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if( outputTracker.getText().contains("desktop_process") ) {
System.out.println("Checking results...");
check_response_timer.stop();
process_response();
} else {
num_checks++;
System.out.println("Checking results...");
if( num_checks == 10 ) {
check_response_timer.stop();
checkLater = true;
responseLbl.setText("Connection timeout. Please click reconnect to check again.");
num_checks = 0;
}
}
}
};
private Timer check_response_timer = new Timer(200,checkAction);
これは正常に機能します。現在のサーバーのロードとロードされているPHPページの現在の複雑さでは、ループは最初の反復後に停止しますが、それは少し非効率的であるように思われ、ページのロードに数秒かかるかどうかをチェックし続ける必要はありませんサーバーの負荷が高い場合や、より複雑なPHPページの場合。
ページの読み込みが完了したことを確認するためのより良い方法があるかどうか疑問に思っています。
JEditorPane.read(inputStream)メソッドを使用するか、Swingバックグラウンドワーカースレッドでページを設定し、ワーカーのdone()が呼び出されたときにPHPページの出力を処理できるかどうか疑問に思いました。
そして、PHP出力をロードして、エディターペインが表示されないため、エディターペインを使用せずに、動的に生成された出力から文字列に直接読み取るより良い方法はありますか?
これが十分に明確であることを願っています。
ありがとう。