er.java Source code

Java tutorial

Introduction

Here is the source code for er.java

Source

/*
 * ====================================================================
 *
 *  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();
    }
}