import java.io.*; import java.util.*; import java.net.*; public class WebTest { public static void main(String[] args) { System.out.println("beging..."); DownLoadPages("http://login.xiaonei.com/Login.do", "d:/fileDown.txt"); // visit("http://www.xiaonei.com"); System.out.println("end."); } public static void DownLoadPages(String urlStr, String outPath) { int chByte = 0; URL url = null; HttpURLConnection httpConn = null; InputStream in = null; FileOutputStream out = null; try { String post = "email=" + URLEncoder.encode("e-mail", "UTF-8") + "&password=" + "password"; url = new URL(urlStr); httpConn = (HttpURLConnection) url.openConnection(); //setInstanceFollowRedirects can then be used to set if //redirects should be followed or not and this should be used before the //connection is established (via getInputStream, getResponseCode, and other //methods that result in the connection being established). httpConn.setFollowRedirects(false); //inorder to disable the redirects httpConn.setInstanceFollowRedirects(false); httpConn.setDoOutput(true); httpConn.setDoInput(true); httpConn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT)"); httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //ok now, we can post it PrintStream send = new PrintStream(httpConn.getOutputStream()); send.print(post); send.close(); URL newURL = new URL(httpConn.getHeaderField("Location")); System.out.println("the URL has move to " + httpConn.getHeaderField("Location")); httpConn.disconnect(); // OK, now we are ready to get the cookies out of the URLConnection String cookies = getCookies(httpConn); System.out.println(cookies); httpConn = (HttpURLConnection) newURL.openConnection(); httpConn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT)"); httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); httpConn.setRequestProperty("Cookie", cookies); httpConn.setDoInput(true); in = httpConn.getInputStream(); out = new FileOutputStream(new File(outPath)); chByte = in.read(); while (chByte != -1) { out.write(chByte); //System.out.println(chByte); chByte = in.read(); } } catch (Exception e) { e.printStackTrace(); } } public static String getCookies(HttpURLConnection conn) { StringBuffer cookies = new StringBuffer(); String headName; for (int i = 7; (headName = conn.getHeaderField(i)) != null; i++) { StringTokenizer st = new StringTokenizer(headName, "; "); while (st.hasMoreTokens()) { cookies.append(st.nextToken() + "; "); } } return cookies.toString(); } }