HttpClientのGUI版をJavaで作ってみる。perlとかpythonのプラグイン入れても挙動がおかしくならないeclipseはIDEの鑑。
//HttpClient.java package internal; import java.io.*; import java.net.*; public class HttpClient { private String HTMLPages; public void setHTMLPages(String hTMLPages) { HTMLPages = hTMLPages; } public String getHTMLPages() { return HTMLPages; } public void getHTTP(String inputUrl) { String url = inputUrl; String proxyHost = null; int proxyPort = 80; URL urlObj; HttpURLConnection urlCon; BufferedReader urlIn; String str; if (inputUrl.length() > 0) { url = inputUrl; } try { // URLオブジェクトの作成 if (proxyHost == null) { urlObj = new URL(url); } else { urlObj = new URL("http", proxyHost, proxyPort, url); } // URL接続 urlCon = (HttpURLConnection) urlObj.openConnection(); urlCon.setRequestMethod("GET"); urlIn = new BufferedReader(new InputStreamReader(urlCon .getInputStream(), "JISAutoDetect")); // HTMLソース格納用変数を準備 StringBuffer sbuf = new StringBuffer(""); // HTMLソースの格納 while ((str = urlIn.readLine()) != null) { sbuf.append(str); } // HTMLソースをメンバ変数に格納 this.setHTMLPages(sbuf.toString()); // URL切断 urlIn.close(); urlCon.disconnect(); } catch (Exception ex) { ex.printStackTrace(); } } }
//HttpClientFrame.java package gui; import java.awt.*; import javax.swing.*; import java.awt.event.*; import internal.HttpClient; public class HttpClientFrame extends JFrame { // エラーがうるさいのでIDを自動生成 private static final long serialVersionUID = 1L; // 上下のパネル設定 JPanel abovePanel = new JPanel(); JPanel underPanel = new JPanel(); // ラベル、テキストエリア、ボタンの設定(上部) private JLabel label = new JLabel("URL:"); private JTextField tf = new JTextField("", 30); private JButton b1 = new JButton("OK"); // ラベル、テキストエリア、ボタンの最小サイズを求めておく Dimension sz1 = label.getMaximumSize(); Dimension sz2 = tf.getMaximumSize(); Dimension sz3 = b1.getMaximumSize(); // テキストエリアの設定(下部) private JTextArea ta = new JTextArea("", 4, 15); HttpClientFrame() { // 要素の下準備 sz2.width = Short.MAX_VALUE; // テキストエリアはどこまでも大きくなる sz2.height = sz3.height; tf.setMaximumSize(sz2); // 縦2パネル構成 (上:URL入力欄 ボタンなど 下:HTML文出力) setLayout(new BorderLayout()); add("North", abovePanel); add("Center", underPanel); // 要素をパネルに配置(上部) abovePanel.setLayout(new BoxLayout(abovePanel, BoxLayout.LINE_AXIS)); abovePanel.add(label); abovePanel.add(tf); b1.addActionListener(new inputURLListener()); abovePanel.add(b1); // 要素をパネルに配置(下部) underPanel.setLayout(new GridLayout(1, 1)); ta.setLineWrap(true); JScrollPane scrollpane = new JScrollPane(ta); underPanel.add(scrollpane); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("HttpClientGUI"); setSize(640, 480); setVisible(true); } // アクションリスナークラス class inputURLListener implements ActionListener { HttpClient hc = new HttpClient(); public void actionPerformed(ActionEvent e) { // OKボタンが押されたときの処理 if (tf.getText() != null) { String inputURL = tf.getText(); hc.getHTTP(inputURL); ta.setText(hc.getHTMLPages()); } } } public static void main(String args[]) { new HttpClientFrame(); } }
動作風景
・jarファイル → exeファイルへの変換を行ったところ438KBになった。軽いっすね。
>
>
>
>
>