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();
    }
}
原文地址:https://www.cnblogs.com/chasewade/p/3408089.html