やりたい事は簡単でも、環境からの説明を入れると長くなってしまうので、それぞれの要点部分は他から参照するようにしています。 対象とする URL は、PHP で作成した簡易掲示板です。この簡易掲示板は、Google Chrome で開いた時のみ簡易掲示板として働きます。それ以外では 簡易的な JSON の文字列で掲示板用のデータを返します。Google Chrome でも、モバイルモードで、デバイス無しで UA を適当に文字列入れると JSON で表示します。 Java で Window プログラムをテストするのに、Vector で配布されている自己解凍式の Pleiades を使い、Window Builder ですぐボタンとそのイベントコードまでが作成されます。後は、そのイベントからここにあるクラスを作成して呼び出すだけです。 このクラスは、元々は Android 用に作ったもので、リンク先には POST もあります。 ここでは、まだ実装していませんが、この後 Google gson を使って JSON データを利用する事になります。 プロジェクト作成からボタン作成まで 日本語 Eclipse 4.4 Pleiades All in One Java(Vector から) で即 Window Builder HttpGet クラス ※ セッション対応した、HttpGet と HttpPost はこちらから
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpGet { // ********************************************** // URL と charset の初期値 // ********************************************** private String initTargetUrl = "http://toolbox.winofsql.jp/log.php"; private String initTargetCharset = "utf-8"; // ********************************************** // コンストラクタによって初期値が違います // ********************************************** public HttpGet() { } public HttpGet(String targetUrl) { initTargetUrl = targetUrl; } public HttpGet(String targetUrl,String targetCharset) { initTargetUrl = targetUrl; initTargetCharset = targetCharset; } // ********************************************** // コンストラクタで指定した URL と charset で処理 // ********************************************** public String execute() { return execute(initTargetUrl,initTargetCharset); } // ********************************************** // 指定した URL へ 任意の charset で処理 // ********************************************** public String execute(String targetUrl,String targetCharset) { StringBuffer web_data = new StringBuffer(); try { // ********************************************** // インターネットへの接続 // ********************************************** // 読み込む WEB上のターゲット URL url = new URL(targetUrl); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); // GET メソッド http.setRequestMethod("GET"); // 接続 http.connect(); // ********************************************** // ストリームとして読み込む準備 // ********************************************** // 以下読み込み3点セット InputStream / InputStreamReader / BufferedReader InputStream input_stream = http.getInputStream(); // UTF-8 でリーダーを作成 InputStreamReader input_stream_reader = new InputStreamReader(input_stream, targetCharset); // 行単位で読み込む為の準備 BufferedReader buffered_reader = new BufferedReader(input_stream_reader); // ********************************************** // 行の一括読みこみ // ********************************************** String line_buffer = null; // BufferedReader は、readLine が null を返すと読み込み終了 while ( null != (line_buffer = buffered_reader.readLine() ) ) { // コマンドプロンプトに表示 web_data.append( line_buffer ); web_data.append( "\n" ); } // ********************************************** // 接続解除 // ********************************************** http.disconnect(); } catch(Exception e) { // 失敗 System.out.println( e.getMessage()); } return web_data.toString(); } }
読み出す URL 部分には、以下のページで紹介している内容を使用しています。 PHP による『超簡易掲示板』 / アプリケーションからの POST 検証用 本来は localhost に設置して Google Chrome でデータを登録した結果を JSON で取得するように作成されています localhost の構築は、以下で説明している 『AN HTTP Server』を使用すると簡単です 実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります 読み出し部分
/** * Create contents of the application window. * @param parent */ @Override protected Control createContents(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.setLayout(null); { Button btnNewButton = new Button(container, SWT.NONE); btnNewButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { System.out.println("ボタンの処理"); HttpGet hg = new HttpGet(); // String result = // hg.execute( // "http://localhost/basic/log_01/log.php", // "utf-8" // ); String result = hg.execute(); System.out.println(result); } }); btnNewButton.setBounds(10, 10, 81, 28); btnNewButton.setText("New Button"); } return container; }
localhost で行った実行結果は以下のようになっています。 Eclipse で、コメントのオン・オフは、行を選択して CTRL + / です。 ▼ localhost を Google Chrome で開いたものです。
|
【java : 通信関連の最新記事】
- Java : WEB上のテキストファイルを取得する
- Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )
- Javamail で IMAP 受信
- OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う
- java をコマンドプロンプトからビルドして実行するサンプル。( メール送信が初心者には楽しいはず )
- javamail でメール送信と、付属のバッチビルド用のスクリプトの解説
- Java : バッチでテストする Twiiter API の『検索処理』
- google-gson(Java) を使って、JSON を 定義済みクラスのオブジェクトに一括変換する
- Java : RSS(Document) から、item の中の先頭の指定した要素の値を取得するクラス
- google-gson で、JSON 文字列の構成要素の一覧を取り出す処理
- java : Apache commons-net-3.0.1 を使ってごく自然に FTPS(セキュア) でファイルのアップロード/ダウンロード
- javamail 1.4.4 : IMAP で、ユーザから別のユーザへメッセージを全て(範囲指定で)コピーする
- javamail 1.4.4 : IMAP のメール受信イベントでメールを受け取ったら処理を行う
- Java : WEB 上の XML データの内容を取得する