ASHでは、技術評論社のSoftwareDesign誌(2002年6月号)の「ゼロからはじめるHTTP+WebDAVプログラミング」を執筆しました。
このページでは、執筆時のプログラムを公開しています。コピー&ペーストすることにより利用できます。
プログラムの詳細は、技術評論社のSoftwareDesign誌を読んでください。
なお、記事についての質問などがありましたら、ASHの掲示板でも受け付けます。
下記のソースを一括ダウンロードできます。 ソースファイルは、LZH圧縮形式と、tar+gzip圧縮形式で、ダウンロード可能となっています。 LZH圧縮形式には、Shift_JISコードのソースが格納されています。 tar+gzip圧縮形式には、EUC-JPコードのソースが格納されています。
sd_http.lzh(LZH圧縮形式のダウンロード) sd_http.tar.gz(tar+gzip圧縮形式のダウンロード) |
JavaのSoketクラスを使って、指定したURLのHTTPヘッダとHTMLソースを表示するプログラムのソースです。
Http.java |
---|
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/ import java.io.*; import java.net.*; /** Httpプロトコルによるソース表示 **/ public class Http { public static void main(String args[]) { String url; String host; int port; String proxyHost; int proxyPort; Socket sock; BufferedReader sockin; BufferedWriter sockout; String str; try { // プロキシの設定 proxyHost = ""; proxyPort = 8080; // URLの設定 if (proxyHost.equals("")) { // プロキシを使わない場合 url = "/"; host = "www.ash.jp"; port = 80; } else { // プロキシを使う場合 url = "http://www.ash.jp/"; host = proxyHost; port = proxyPort; } // ソケットの作成 sock = new Socket(host, port); sockin = new BufferedReader(new InputStreamReader(sock.getInputStream())); sockout = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); // HTTPリクエスト送信 sockout.write("GET " + url +" HTTP/1.1\r\n"); sockout.write("Host: " + host + "\r\n"); sockout.write("Connection: close\r\n"); sockout.write("\r\n"); sockout.flush(); // HTTPレスポンス受信 while ((str = sockin.readLine()) != null) { System.out.println(str); } // ソケットのクローズ sockout.close(); sockin.close(); sock.close(); } catch (Exception ex) { ex.printStackTrace(); } } } |
JavaのHttpURLConnectionクラスを使って、指定したURLのHTTPヘッダとHTMLソースを表示するプログラムのソースです。
HttpURL.java |
---|
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/ import java.io.*; import java.net.*; /** Httpプロトコルによるソース表示(HttpURLConnectionクラス利用) **/ public class HttpURL { public static void main(String args[]) { String url; String proxyHost; int proxyPort; URL urlObj; HttpURLConnection urlCon; BufferedReader urlIn; String str; try { // プロキシの設定 proxyHost = ""; proxyPort = 8080; // URLオブジェクトの作成 url = "http://www.ash.jp/"; if (proxyHost.equals("")) { // プロキシを使わない場合 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())); // HTMLソースの表示 while ((str = urlIn.readLine()) != null) { System.out.println(str); } // URL切断 urlIn.close(); urlCon.disconnect(); } catch (Exception ex) { ex.printStackTrace(); } } } |
HttpClient.java、HttpIClient.javaに対して、"Hello World!"という文字列と、123という整数の値を返却するサーブレットのソースです。
HttpServer.java |
---|
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** HTTP通信サーブレット **/ public class HttpServer extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { DataOutputStream out; res.setContentType("application/octet-stream"); out = new DataOutputStream(res.getOutputStream()); out.writeUTF("Hello World!"); out.writeInt(123); out.close(); } } |
HttpServer.javaから、"Hello World!"という文字列と、123という整数の値を受け取り表示するアプレットのソースです。
HttpClient.java |
---|
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/ import java.awt.*; import java.applet.*; import java.io.*; import java.net.*; /** HTTP通信クライアント(アプレット) **/ public class HttpClient extends Applet { String msg; int num; public void init() { HttpURLConnection con; DataInputStream in; String url = "http://localhost/servlet/HttpServer"; URL urlObj; try { // HTTP接続 urlObj = new URL(url); con = (HttpURLConnection)urlObj.openConnection(); con.setRequestMethod("GET"); con.connect(); in = new DataInputStream(con.getInputStream()); // HTTPデータの設定 msg = in.readUTF(); num = in.readInt(); // URL切断 in.close(); con.disconnect(); } catch (Exception ex) { msg = ex.getMessage(); } } public void paint(Graphics g) { g.drawString(msg, 10, 30); g.drawString(Integer.toString(num), 10, 50); } } |
HttpServer.javaから、"Hello World!"という文字列と、123という整数の値を受け取り表示するiアプリのソースです。
HttpIClient.java |
---|
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/ import com.nttdocomo.ui.*; import com.nttdocomo.io.*; import javax.microedition.io.*; import java.io.*; /** HTTP通信クライアント(iモード) **/ public class HttpIClient extends IApplication { MainCanvas mc; // メインキャンバス public void start() { mc = new MainCanvas(); // メインキャンバスの作成 Display.setCurrent(mc); // メインキャンバスを画面に表示 } } class MainCanvas extends Canvas { String msg; int num; public MainCanvas() { HttpConnection con; DataInputStream in; String url = "http://localhost/servlet/HttpServer"; try { // HTTP接続 con = (HttpConnection)Connector.open(url, Connector.READ, true); con.setRequestMethod("GET"); con.connect(); in = new DataInputStream(con.openInputStream()); // HTTPデータの設定 msg = in.readUTF(); num = in.readInt(); // URL切断 in.close(); con.close(); } catch (Exception ex) { msg = ex.getMessage(); } } public void paint(Graphics g) { g.drawString(msg, 10, 30); g.drawString(Integer.toString(num), 10, 50); } } |