Java tutorial
/* * ==================================================================== * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see <http://www.apache.org/>. * renren.com * <input type="hidden" name="origURL" value="http://www.renren.com/home" /> * <input type="hidden" name="domain" value="renren.com" /> * <input type="hidden" name="key_id" value="1" /> * <input type="submit" id="login" class="input-submit login-btn" value="" tabindex="5"/> * http://s.xnimg.cn/a36853/n/apps/login/login-all.js */ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.ClientPNames; import org.apache.http.cookie.Cookie; import org.apache.http.cookie.CookieOrigin; import org.apache.http.cookie.CookieSpec; import org.apache.http.cookie.CookieSpecFactory; import org.apache.http.cookie.MalformedCookieException; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.impl.cookie.BrowserCompatSpec; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * * Purpose: * * @author: shihuangzhe.com * @since: JDK 1.6 * @date: 2012-4-28 * */ public class er { /** ???url */ private static String loginURL = "http://nyglzx.tongji.edu.cn/web/datastat.aspx?BuildingDown=20%E5%8F%B7%E6%A5%BC%20%20%20%20%20%20&DistrictDown=%E5%98%89%E5%AE%9A%E6%A0%A1%E5%8C%BA&RoomnameText=411&Submit=%E6%9F%A5%E8%AF%A2&__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWIwLCqrCECgKehO%2FXDgKS2sqQDQKbhO%2FXDgLvo6%2FWAQKchO%2FXDgKco5mFBAKo7ZuOCQKQtOGrAwLGtc2eAwKUkP3jDgKphpG2AgL3ot33AgL3ov2mCALP9anUDQLO9e2UAQLO9fEwAsHtjeQDAsHtlaACAsHtmdwCAsHtnfwCAs7toZgNAs7tpbgNAs7tqdQNAsHt7ZQBApnz9msChpiS3QMCtcKkWgL%2BhMCpBAK7ovXVAwLVvLqTBQKewdn%2BDgLeuZHECgK8w4S2BAKjm5WMBhrpaK%2FPVR7L%2BngMlHOw%2B5OLj989&__LASTFOCUS=&__VIEWSTATE=%2FwEPDwUKLTYwNjgwNDAyOQ8WBB4Jcm9vbXRhYmxlBQ9qZGRhdGFfcm9vbXZpZXceCWRhdGF0YWJsZQULamRkYXRhX3ZpZXcWAgIDD2QWBgIDDxBkZBYBAgFkAgUPEA8WBB4NRGF0YVRleHRGaWVsZAUIUk9PTU5BTUUeC18hRGF0YUJvdW5kZ2QQFRIPMDflj7flhazlr5MgICAgDzA45Y%2B35YWs5a%2BTICAgIA8wOeWPt%2BWFrOWvkyAgICAPMTDlj7flhazlr5MgICAgDzEy5Y%2B35YWs5a%2BTICAgIA8xM%2BWPt%2BWFrOWvkyAgICAPMTTlj7flhazlr5MgICAgDzE15Y%2B35YWs5a%2BTICAgIA8xNuWPt%2BWFrOWvkyAgICAPMTflj7flhazlr5MgICAgDzE45Y%2B35YWs5a%2BTICAgIA4xOeWPt%2BalvCAgICAgIA4yMOWPt%2BalvCAgICAgIA7mnKznp5E0ICAgICAgIA7mnKznp5E1ICAgICAgIA7mnKznp5E2ICAgICAgIA7noJTnqbYyICAgICAgIA7noJTnqbYzICAgICAgIBUSDzA35Y%2B35YWs5a%2BTICAgIA8wOOWPt%2BWFrOWvkyAgICAPMDnlj7flhazlr5MgICAgDzEw5Y%2B35YWs5a%2BTICAgIA8xMuWPt%2BWFrOWvkyAgICAPMTPlj7flhazlr5MgICAgDzE05Y%2B35YWs5a%2BTICAgIA8xNeWPt%2BWFrOWvkyAgICAPMTblj7flhazlr5MgICAgDzE35Y%2B35YWs5a%2BTICAgIA8xOOWPt%2BWFrOWvkyAgICAOMTnlj7fmpbwgICAgICAOMjDlj7fmpbwgICAgICAO5pys56eRNCAgICAgICAO5pys56eRNSAgICAgICAO5pys56eRNiAgICAgICAO56CU56m2MiAgICAgICAO56CU56m2MyAgICAgICAUKwMSZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZGQCFQ88KwANAGQYAQUJR3JpZFZpZXcxD2dks72pwRhFZXy7shqK0FV%2BHo%2BV6xw%3D"; /** ??blog, http://www.renren.com/home */ private static final String targetUrl = "http://nyglzx.tongji.edu.cn/web/datastat.aspx"; /** ??(url) */ private static final String BD = "BuildingDown"; /** ??() */ private static final String DD = "DistrictDown"; /** ??(key_id) */ private static final String RT = "RoomnameText"; /** ??(??) */ private static final String SM = "Submit"; /** ??(?) */ private static final String _EA = "__EVENTARGUMENT"; private static final String _ET = "__EVENTTARGET"; private static final String _EV = "__EVENTVALIDATION"; private static final String _LF = "__LASTFOCUS "; private static final String _VS = "__VIEWSTATE"; /** ThreadSafeClientConnManager?? */ private DefaultHttpClient client = new DefaultHttpClient(); /** response */ private HttpResponse response; /** * Purpose: renren.com * * @throws Exception * @return: void */ private boolean login() { boolean isLogin = false; HttpGet httpget = new HttpGet(loginURL); // ? try { // ? response = client.execute(httpget); System.out.println(response.getStatusLine());// 302 // cookie,renren.com?cookie,??pt. // HttpClientParams.setCookiePolicy(client.getParams(), // CookiePolicy.BROWSER_COMPATIBILITY); // HttpClient 4.0cookieWARNcookie isLogin = true; HttpEntity entity = response.getEntity(); String context = EntityUtils.toString(entity); System.out.println("---------??----------- "); System.out.print("Title: "); System.out.println(context); } catch (UnsupportedEncodingException e) { System.err.println("UnsupportedEncodingException!"); } catch (ClientProtocolException e) { System.err.println("ClientProtocolException!"); } catch (IOException e) { System.err.println("IOException!"); } finally { httpget.abort(); } return isLogin; } /** * Purpose: ?blog * * @param response * @return: String */ private void showResult() { try { if (!login()) { System.err.println("!"); System.exit(0); } /* * ?renren.com????? * http://www.renren.com/callback.do?t=da278e2526f9b2387ea22e57578a85d93 * & * origURL=http%3A%2F%2Fblog.renren.com%2Fblog%2F84082953%2F398292611 * &needNotify=false ?????? */ HttpPost httpost2 = new HttpPost(loginURL); response = client.execute(httpost2); // ? List<NameValuePair> nvps2 = new ArrayList<NameValuePair>(); nvps2.add(new BasicNameValuePair(BD, "19?")); nvps2.add(new BasicNameValuePair(DD, "")); nvps2.add(new BasicNameValuePair(RT, "411")); nvps2.add(new BasicNameValuePair(_EA, "")); nvps2.add(new BasicNameValuePair(_ET, "")); nvps2.add(new BasicNameValuePair(_EV, "/wEWIwLCqrCECgKehO/XDgKS2sqQDQKbhO/XDgLvo6/WAQKchO/XDgKco5mFBAKo7ZuOCQKQtOGrAwLGtc2eAwKUkP3jDgKphpG2AgL3ot33AgL3ov2mCALP9anUDQLO9e2UAQLO9fEwAsHtjeQDAsHtlaACAsHtmdwCAsHtnfwCAs7toZgNAs7tpbgNAs7tqdQNAsHt7ZQBApnz9msChpiS3QMCtcKkWgL+hMCpBAK7ovXVAwLVvLqTBQKewdn+DgLeuZHECgK8w4S2BAKjm5WMBhrpaK/PVR7L+ngMlHOw+5OLj989")); nvps2.add(new BasicNameValuePair(_LF, "")); nvps2.add(new BasicNameValuePair(_VS, "/wEPDwUKLTYwNjgwNDAyOQ8WBB4Jcm9vbXRhYmxlBQ9qZGRhdGFfcm9vbXZpZXceCWRhdGF0YWJsZQULamRkYXRhX3ZpZXcWAgIDD2QWBgIDDxBkZBYBAgFkAgUPEA8WBB4NRGF0YVRleHRGaWVsZAUIUk9PTU5BTUUeC18hRGF0YUJvdW5kZ2QQFRIPMDflj7flhazlr5MgICAgDzA45Y+35YWs5a+TICAgIA8wOeWPt+WFrOWvkyAgICAPMTDlj7flhazlr5MgICAgDzEy5Y+35YWs5a+TICAgIA8xM+WPt+WFrOWvkyAgICAPMTTlj7flhazlr5MgICAgDzE15Y+35YWs5a+TICAgIA8xNuWPt+WFrOWvkyAgICAPMTflj7flhazlr5MgICAgDzE45Y+35YWs5a+TICAgIA4xOeWPt+alvCAgICAgIA4yMOWPt+alvCAgICAgIA7mnKznp5E0ICAgICAgIA7mnKznp5E1ICAgICAgIA7mnKznp5E2ICAgICAgIA7noJTnqbYyICAgICAgIA7noJTnqbYzICAgICAgIBUSDzA35Y+35YWs5a+TICAgIA8wOOWPt+WFrOWvkyAgICAPMDnlj7flhazlr5MgICAgDzEw5Y+35YWs5a+TICAgIA8xMuWPt+WFrOWvkyAgICAPMTPlj7flhazlr5MgICAgDzE05Y+35YWs5a+TICAgIA8xNeWPt+WFrOWvkyAgICAPMTblj7flhazlr5MgICAgDzE35Y+35YWs5a+TICAgIA8xOOWPt+WFrOWvkyAgICAOMTnlj7fmpbwgICAgICAOMjDlj7fmpbwgICAgICAO5pys56eRNCAgICAgICAO5pys56eRNSAgICAgICAO5pys56eRNiAgICAgICAO56CU56m2MiAgICAgICAO56CU56m2MyAgICAgICAUKwMSZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZGQCFQ88KwANAGQYAQUJR3JpZFZpZXcxD2dks72pwRhFZXy7shqK0FV+Ho+V6xw=")); nvps2.add(new BasicNameValuePair(SM, "")); HttpPost httpost = new HttpPost(loginURL); httpost.setEntity(new UrlEncodedFormEntity(nvps2, HTTP.UTF_8)); response = client.execute(httpost); HttpEntity entity2 = response.getEntity(); // ? String context = EntityUtils.toString(entity2); System.out.println("---------??----------- "); System.out.println(context); } catch (ParseException e) { System.err.println("ParseException!"); } catch (IOException e) { System.err.println("IOException!"); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources client.getConnectionManager().shutdown(); } } // /** // * Purpose: ???blog // * @param orgTest // * @return: String // */ // private String printBlog(String orgTest) { // // ? // // String regexp = "<div\\s*id=\"blogContent\"\\s*[^>]*>(.+?)</div>"; // // String regexp = // "(<div id=\"blogContent\" class=\"text-article\")(.+?)( </div>)"; // Pattern pattern = // Pattern.compile("<div\\s*id=\"blogContent\"\\s*[^>]*>(.+?)</div>"); // Matcher m = pattern.matcher(orgTest); // if (!m.find()) { // return null; // } // return m.group(0); // } /** * Purpose: jsoup?Html * * @param html * @return: String[] */ private static String[] htmlToPlainText(String html) { String[] content = new String[] { "", "" }; Document doc = Jsoup.parse(html); // ???blog Elements titles = doc.select("h3.title-article>strong"); for (Element oneSelect : titles) content[0] += oneSelect.text(); // ???blog Elements contents = doc.select("div#blogContent"); for (Element oneSelect : contents) content[1] += oneSelect.text(); return content; } /** * Purpose: * * @param args * @return: void */ public static void main(String[] args) { er renRen = new er(); renRen.login(); } }