
1: package BlogTest;
2: 3: import java.io.BufferedReader; 4: import java.io.DataOutputStream; 5: import java.io.IOException; 6: import java.io.InputStreamReader; 7: import java.io.UnsupportedEncodingException; 8: import java.net.CookieHandler; 9: import java.net.CookieManager; 10: import java.net.URL; 11: import java.net.URLEncoder; 12: import java.util.ArrayList; 13: import java.util.List; 14: 15: import org.jsoup.Jsoup; 16: import org.jsoup.nodes.Document; 17: import org.jsoup.nodes.Element; 18: import org.jsoup.select.Elements; 19: 20: import sun.net.www.PRotocol.http.HttpURLConnection;
21: 22: public class Blogrunning {
23: 24: private List<String> cookies;
25: private HttpURLConnection conn;
26: 27: private final String USER_AGENT = "Mozilla/5.0";
28: 29: /**
30: * @param args
31: * @throws Exception
32: */
33: public static void main(String[] args) throws Exception {
34: String url = "http://passport.VEVb.com/user/signin";
35: String redirturl = "http://home.VEVb.com/u/Sir-Lin/followers/1/";
36: 37: Blogrunning http = new Blogrunning();
38: 39: CookieHandler.setDefault(new CookieManager());
40: 41: // 1. 發(fā)送get請求
42: String page = http.GetPageContent(url);43: String postParams = http.getFormParams(page, "username", "password");
44: // 2. 發(fā)送post請求
45: http.sendPost(url, postParams); 46: 47: // 3. success
48: String result = http.GetPageContent(redirturl);49: System.out.println(result);
50: }51: private void sendPost(String url, String postParams) throws IOException {
52: URL obj = new URL(url);
53: conn = (HttpURLConnection) obj.openConnection(); 54: 55: conn.setUseCaches(false);
56: conn.setRequestMethod("POST");
57: conn.setRequestProperty("Host", "passport.VEVb.com");
58: conn.setRequestProperty("User-Agent", USER_AGENT);
59: conn.setRequestProperty("Accept",
60: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
61: conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
62: for (String cookie : this.cookies) {
63: conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
64: }65: conn.setRequestProperty("Connection", "keep-alive");
66: conn.setRequestProperty("Referer", "http://passport.VEVb.com/user/signin");
67: conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
68: conn.setRequestProperty("Content-Length", Integer.toString(postParams.length()));
69: 70: conn.setDoOutput(true);
71: conn.setDoInput(true);
72: 73: //發(fā)送post請求
74: DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
75: wr.writeBytes(postParams); 76: wr.flush(); 77: wr.close(); 78: 79: int responseCode = conn.getResponseCode();
80: System.out.println("/nSending 'POST' request to URL : " + url);
81: System.out.println("Post parameters : " + postParams);
82: System.out.println("Response Code : " + responseCode);
83: 84: BufferedReader in =
85: new BufferedReader(new InputStreamReader(conn.getInputStream()));
86: String inputLine;87: StringBuffer response = new StringBuffer();
88: 89: while ((inputLine = in.readLine()) != null) {
90: response.append(inputLine); 91: }92: in.close();
93: }94: private String getFormParams(String html, String username, String password) throws UnsupportedEncodingException {
95: System.out.println("Extracting form's data...");
96: 97: Document doc = Jsoup.parse(html); 98: 99: Element loginform = doc.getElementById("Main");
100: Elements inputElements = loginform.getElementsByTag("input");
101: List<String> paramList = new ArrayList<String>();
102: for (Element inputElement : inputElements) {
103: String key = inputElement.attr("id");
104: String value = inputElement.attr("value");
105: if (key.equals("input1"))
106: value = username;
107: else if (key.equals("input2"))
108: value = password;
109: else if (key.equals("remember_me"));
110: value = "true";
111: paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
112: } 113: 114: StringBuilder result = new StringBuilder();
115: for (String param : paramList) {
116: if (result.length() == 0) {
117: result.append(param);118: } else {
119: result.append("&" + param);
120: } 121: }122: return result.toString();
123: } 124: 125: public List<String> getCookies() {
126: return cookies;
127: } 128: 129: public void setCookies(List<String> cookies) {
130: this.cookies = cookies;
131: }132: private String GetPageContent(String url) throws Exception {
133: URL obj = new URL(url);
134: conn = (HttpURLConnection) obj.openConnection(); 135: 136: conn.setRequestMethod("GET");
137: 138: conn.setUseCaches(false);
139: 140: conn.setRequestProperty("User-Agent", USER_AGENT);
141: conn.setRequestProperty("Accept",
142: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
143: conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.5");
144: if (cookies != null) {
145: for (String cookie : this.cookies) {
146: conn.addRequestProperty("Cookie", cookie.split(";",1)[0]);
147: System.out.println("cookie: "+cookie.split(";",1)[0]);
148: } 149: } 150: 151: int responseCode = conn.getResponseCode();
152: System.out.println("/nSending 'GET' request to URL : " + url);
153: System.out.println("Response Code : " + responseCode);
154: 155: BufferedReader in =
156: new BufferedReader(new InputStreamReader(conn.getInputStream()));
157: String inputLine;158: StringBuffer response = new StringBuffer();
159: 160: while ((inputLine = in.readLine()) != null) {
161: response.append(inputLine); 162: }163: in.close();
164: 165: // Get the response cookies
166: setCookies(conn.getHeaderFields().get("Set-Cookie"));
167: 168: return response.toString();
169: } 170: 171: }新聞熱點
疑難解答