01 /*
02 * Zip.java
03 * POST zip code to look up cities.
04 *
05 * Created on April 20, 2003, 11:09 PM
06 */
07
08 import java.io.PrintWriter;
09 import java.net.HttpURLConnection;
10 import java.net.URL;
11 import java.net.URLConnection;
12
13 import org.htmlparser.beans.StringBean;
14
15 /**
16 * POST zip code to look up cities.
17 * @author Derrick Oswald
18 */
19 public class Zip
20 {
21 String mText; // text extracted from the response to the POST request
22
23 /**
24 * Creates a new instance of Zip
25 */
26 public Zip (String code)
27 {
28 URL url;
29 HttpURLConnection connection;
30 StringBuffer buffer;
31 PrintWriter out;
32 StringBean bean;
33
34 try
35 {
36 // from the 'action' (relative to the refering page)
37 url = new URL ("http://www.usps.com/zip4/zip_response.jsp");
38 connection = (HttpURLConnection)url.openConnection ();
39 connection.setRequestMethod ("POST");
40
41 connection.setDoOutput (true);
42 connection.setDoInput (true);
43 connection.setUseCaches (false);
44
45 // more or less of these may be required
46 // see Request Header Definitions: http://www.ietf.org/rfc/rfc2616.txt
47 connection.setRequestProperty ("Accept-Charset", "*");
48 connection.setRequestProperty ("Referer", "http://www.usps.com/zip4/citytown.htm");
49 connection.setRequestProperty ("User-Agent", "Zip.java/1.0");
50
51 buffer = new StringBuffer (1024);
52 // 'input' fields separated by ampersands (&)
53 buffer.append ("zipcode=");
54 buffer.append (code);
55 // buffer.append ("&");
56 // etc.
57
58 out = new PrintWriter (connection.getOutputStream ());
59 out.print (buffer);
60 out.close ();
61
62 bean = new StringBean ();
63 bean.setConnection (connection);
64 mText = bean.getStrings ();
65 }
66 catch (Exception e)
67 {
68 mText = e.getMessage ();
69 }
70
71 }
72
73 public String getText ()
74 {
75 return (mText);
76 }
77
78 /**
79 * Program mainline.
80 * @param args The zip code to look up.
81 */
82 public static void main (String[] args)
83 {
84 if (0 >= args.length)
85 System.out.println ("Usage: java Zip <zipcode>");
86 else
87 System.out.println (new Zip (args[0]).getText ());
88 }
89 }
|