java httpurlconnection 登录网站 完整代码
- 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();
- }
- }