URLConnection sample
build.xml と一緒に。いつの日か、コピペで使えるように。まずは build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="URLClient" default="jar" basedir="."> <property name="src" value="src"/> <property name="class" value="class"/> <property name="javadoc" value="api"/> <property name="version" value="1.0.0"/> <property name="build.jar" value="URLClient-${version}.jar"/> <target name="jar" depends="compile"> <jar jarfile="${build.jar}" basedir="${class}"/> </target> <target name="compile"> <mkdir dir="${class}" /> <!-- このサンプルでは使用しないが今後テンプレートにするため定義(Tomcatを想定) --> <path id="myclasspath"> <fileset dir="lib"> <include name="*.jar"/> </fileset> <pathelement path="${catalina.home}/commons/lib/servlet.jar"/> </path> <javac srcdir="${src}" destdir="${class}" encoding="UTF-8" classpathref="myclasspath"/> </target> <target name="javadoc"> <javadoc packagenames="*" sourcepath="${src}" destdir="${javadoc}"/> </target> <target name="clean"> <delete dir="${class}" /> <delete file="${build.jar}" /> </target> <target name="run"> <java classname="URLClient" classpath="${build.jar}"> <arg value="localhost"/> </java> </target> </project>
ソースコード。例によって引数は一つしか使わないが、今後のために。
import java.net.*; import java.io.*; import java.util.*; public class URLClient { public static void main(String[]args)throws Exception { String host = null; String param1 = null; String param2 = null; if ( args.length == 1 || args.length == 3 ) { host = args[0]; param1 = (args.length == 3) ? args[1] : "param1"; param2 = (args.length == 3) ? args[2] : "param2"; } else { System.out.println("Usage: java URLClient host"); System.out.println(" java URLClient host param1 param2"); System.exit(1); } URL url = new URL("http://" + host + "/"); HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); urlconn.setRequestMethod("GET"); urlconn.setInstanceFollowRedirects(false); urlconn.connect(); Map<String,List<String>> headers = urlconn.getHeaderFields(); Iterator<String> iterator = headers.keySet().iterator(); System.out.println("Response Headers:"); while (iterator.hasNext()) { String key = iterator.next(); System.out.println(" " + key + ":" + headers.get(key)); } System.out.println("Response Code : " + urlconn.getResponseCode()); System.out.println("Body : "); BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream())); while (true) { String line = reader.readLine(); if (line == null) break; System.out.println(line); } reader.close(); urlconn.disconnect(); } }
ほとんどJava で HTTP クライアントを作ってみよう (2)のコピーだが。ありがとうございます。